Paso 2: código
No concedo el código porque el formato se arruinara.Por lo tanto, he copiado lo siguiente. Las explicaciones están por debajo.
App.Java:
paquete org.freesideatlanta.msds;
Import java.util.ArrayList;
/**
*
* Praznav
*/
clase pública {App}
el principal vacío estático público (String [] args) {}
trate de {}
String filename = args [0];
ChemicalReader lector = new ChemicalReader(filename);
Productos químicos de ArrayList < cadena > = reader.getChemicalNames();
Catálogo de MsdsCatalog = new MsdsCatalog();
MsdsWriter escritor = new MsdsWriter();
para (química de la cadena: productos químicos) {}
MSDS msds = catalog.query(chemical);
String texto = msds.getText();
Writer.Write (química, texto);
}
Writer.Close();
} catch (ArrayIndexOutOfBoundsException e) {}
System.out.println ("uso: aplicación [filename]");
System.out.println(e.getMessage());
}
}
}
Reader.java química:
paquete org.freesideatlanta.msds;
Import java.util.ArrayList;
Import java.io.*;
clase ChemicalReader {}
String nombre;
ChemicalList ArrayList < cadena > = nuevo () ArrayList < cadena >; Lista de todos los químicos. Número de línea es Índice + 1
Línea de cadena; Cadena que contiene la línea actual del archivo
BufferedReader bufRead;
público ChemicalReader (String nombre) {}
nombre = nombre de archivo;
}
público ArrayList < cadena > getChemicalNames() {
trate de {}
FileReader entrada = new FileReader(name);
bufRead = new BufferedReader(input);
System.out.println ("la lectura comienza ahora...");
System.out.println("___________________________________________________________________________________");
System.out.println();
línea = bufRead.readLine(); Lee la primera línea
getAllChemicals();
bufRead.close(); cierra el lector
replaceBadCharacters();
} catch (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("¡ error! u suck en esto ");
}
volver a chemicalList;
}
privado void replaceBadCharacters() {}
Este interates a través de arraylist y
sustituye cada espacio con un +
int tamaño = chemicalList.size(); variable para el tamaño de la lista de matriz
para (int i = 0; i < tamaño; i ++) {/ / una iteración para cada índice en la lista de matrices
String a = chemicalList.get (i) .replaceAll ("", "+"); crea una nueva variable y sustituye el espacio con un +
chemicalList.remove(i); saca la cuerda antigua en el índice
chemicalList.add(i, a); inserta la cadena nueva
}
}
privado void getAllChemicals() {}
Esto Lee cada línea del documento txt y
pone cada línea en índice separado de un
ArrayList.
trate de {}
mientras que (línea! = null) {/ / mientras el bucle que recorre en iteración cada línea hasta que no hay una
System.out.println ("química:" + linea); imprime el nombre químico
chemicalList.add(line.trim()); agrega a arraylist creado anteriormente
chemicalList.add(line);
linea = "";
línea = bufRead.readLine(); siguiente línea
}
} catch (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("¡ error! u suck en esto ");
}
}
}
MSDS.java:
paquete org.freesideatlanta.msds;
clase pública MSDS {}
String nombre;
String MSDStext;
pública MSDS (cadena a) {}
nombre = a;
}
público String getText () {}
volver MSDStext;
}
público void changeText(String a) {}
MSDStext = a;
}
}
MSDSCatalog.java:
paquete org.freesideatlanta.msds;
Import org.apache.http.*;
Import org.apache.http.client.*;
Import org.apache.http.impl.client.*;
Import org.apache.http.client.methods.*;
Import org.apache.http.util.*;
Import org.jsoup.Jsoup;
Import org.jsoup.nodes.Document;
Import org.jsoup.nodes.Element;
Import org.jsoup.select.Elements;
Import java.util.ArrayList;
Import java.io.*;
clase MsdsCatalog {}
HttpClient cliente;
String URLhere = "http://hazard.com/msds/gn.cgi?query=";
ArrayList < cadena > errorsHere;
ChemicalsMSDS MSDS;
Cuerpo de cuerdas;
String edittedBody;
público MsdsCatalog() {}
cliente = new DefaultHttpClient(); Inicie al cliente de
URLhere = "http://hazard.com/msds/gn.cgi?query="; Esta es la parte genérica de la URL común para cada sitio
errorsHere = nuevo () ArrayList < cadena >;
}
MSDS públicas consulta {} (secuencia química)
trate de {}
URLhere = "http://hazard.com/msds/gn.cgi?query=";
chemicalsMSDS = new MSDS(chemical);
System.out.println ("Química siguiente" + "\n" + "química:" + químicos);
URLhere = URLhere + química;
Método HttpGet = nuevo HttpGet(URLhere); / / inserta el URL al método
System.out.println(URLhere);
HttpResponse respuesta = client.execute(method); Obtiene una respuesta desde la URL
Entidad HttpEntity = response.getEntity(); crea una entidad
cuerpo = EntityUtils.toString(entity); la entidad se convierte en una cadena y anuncios para el cuerpo
Boolean hasJtBakerDb = (body.indexOf("jtbaker.com") > = 0);
Boolean hasSafetyCard = (body.indexOf("mf/cards/file") > = 0);
Boolean hasFileCard = (body.indexOf("href=f") > = 0);
Si (hasJtBakerDb || hasSafetyCard || hasFileCard) {}
caso afirmativo
System.out.println ("sin errores");
chemicalsMSDS = getMSDS();
} else {}
caso negativo
System.out.println ("¡ ERROR! ESTE PRODUCTO QUÍMICO NO SE ENCUENTRA EN LA BASE DE DATOS!");
System.out.println ("Esto se añadirá a la lista de errores");
errorsHere.add(chemical);
}
} catch (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("¡ error! u suck en esto ");
}
volver chemicalsMSDS;
}
privado {} getMSDS() MSDS
Boolean hasSafetyCard = (body.indexOf("mf/cards/file") > = 0);
Boolean hasFisher = (body.indexOf("fscim") > = 0);
Si (hasSafetyCard == true) {}
chemicalsMSDS = retrieveSafetyCard();
} else if (hasFisher == true) {}
chemicalsMSDS = retrieveFisher();
} else {}
chemicalsMSDS = retrieveMSDS();
}
volver chemicalsMSDS;
}
privado {} retrieveSafetyCard() MSDS
trate de {}
Documento abc = Jsoup.connect(URLhere).get();
Enlaces de elementos = abc.select("a[href]");
para (int i = 0; i < links.size(); i ++) {}
Boolean isSafetyCard = (links.get (i) .html () .indexOf ("tarjeta de seguridad") > = 0);
Si (isSafetyCard) {}
Cadena newURL = links.get(i).attr("abs:href");
Método HttpGet = nuevo HttpGet(newURL);
HttpResponse respuesta = client.execute(method);
Entidad HttpEntity = response.getEntity();
String MSDSq = EntityUtils.toString(entity);
Documento doc_one = Jsoup.parse(MSDSq);
MSDSq = doc_one.body().text();
chemicalsMSDS.changeText(MSDSq);
i = links.size() + 10;
} else {}
}
}
} catch (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("¡ error! u suck en esto ");
}
volver chemicalsMSDS;
}
privado {} retrieveFisher() MSDS
trate de {}
Documento abc = Jsoup.connect(URLhere).get();
Enlaces de elementos = abc.select("a[href]");
para (int i = 0; i < links.size(); i ++) {}
Boolean isFisher = (links.get (i) .html () .indexOf ("pescador") > = 0);
Si (isFisher == true) {}
Cadena newURL = links.get(i).attr("abs:href");
Método HttpGet = nuevo HttpGet(newURL);
HttpResponse respuesta = client.execute(method);
Entidad HttpEntity = response.getEntity();
String MSDSq = EntityUtils.toString(entity);
Documento doc_one = Jsoup.parse(MSDSq);
MSDSq = doc_one.body().text();
chemicalsMSDS.changeText(MSDSq);
i = links.size() + 10;
} else {}
}
}
} catch (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("¡ error! u suck en esto ");
}
volver chemicalsMSDS;
}
privado {} retrieveMSDS() MSDS
trate de {}
Documento abc = Jsoup.connect(URLhere).get();
Enlaces de elementos = abc.select("a[href]");
para (int i = 0; i < links.size(); i ++) {}
Boolean isJtBaker = (links.get (i) .html () .indexOf ("Mallinckrodt Baker") > = 0);
Boolean isErrors = (links.get(i).attr("abs:href").indexOf("msds/errors.html") > = 0);
isSearch booleano = (links.get(i).attr("abs:href").indexOf("msds/search.html") > = 0);
Boolean isArchive = (links.get(i).attr("abs:href").indexOf("msds/index.php") > = 0);
Si (isJtBaker == true || isErrors == true || isSearch == true || isArchive == true) {}
} else {}
Cadena newURL = links.get(i).attr("abs:href");
Método HttpGet = nuevo HttpGet(newURL);
HttpResponse respuesta = client.execute(method);
Entidad HttpEntity = response.getEntity();
String MSDSq = EntityUtils.toString(entity);
Documento doc_one = Jsoup.parse(MSDSq);
MSDSq = doc_one.body().text();
chemicalsMSDS.changeText(MSDSq);
i = links.size() + 10;
}
}
} catch (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("¡ error! u suck en esto ");
}
volver chemicalsMSDS;
}
deleteString cadena privada (beginIndex int, endIndex int, String a) {}
String toBeDeleted = a.substring (beginIndex, endIndex);
volver a.replace (toBeDeleted, "");
}
}
MSDSWriter.java:
paquete org.freesideatlanta.msds;
Import java.io.*;
/*
* praznav
*/
clase MsdsWriter {}
FileWriter fstream;
BufferedWriter
público MsdsWriter () {
trate de {}
FStream = nuevo FileWriter("output.txt");
a = new BufferedWriter(fstream);
} catch (excepción e) {}
System.out.println(e.getMessage());
}
}
pública escritura nula (química de la cadena, String texto) {}
trate de {}
out.Append(Chemical);
out.newLine();
out.Append("___");
out.newLine();
out.Append(Text);
out.newLine();
out.newLine();
out.newLine();
} catch (excepción e) {//Catch excepción si cualquier
System.err.println ("Error:" + e.getMessage());
}
}
público void close() {}
trate de {}
out.Close();
} catch (excepción e) {}
System.out.println(e.getMessage());
}
}
}
Aquí está un resumen de cada archivo:
--Aplicaciones--
contiene el método principal y crea una instancia de cada clase de otros
--ChemicalReader--
Compilar una lista química como un objeto de conjunto de algún tipo
Convertir un nombre químico con espacios en una lista de URL amigable parámetro
--MsdsCatalog--
Ejecuta una consulta sobre el nombre químico "amigable" y obtener un resultado
Ver si este resultado es válido para nuestros propósitos
En términos de prioridad: seguridad tarjeta URL es preferido, a continuación, enlaces URL de Fisher, luego ir a través de la restante
-Msds,
String nombre = msds.getChemicalName();
String texto = msds.getText();
--MsdsWriter--
Generar archivos de texto de salida en un subdirectorio