Stap 2: Code
Ik kon niet de code hecht omdat de opmaak zou verknoeien.Dus, ik heb gekopieerd hieronder. Uitleg vindt u hieronder.
App.java:
pakket org.freesideatlanta.msds;
importeren van java.util.ArrayList;
/**
*
* Praznav
*/
openbare klasse App {}
openbare statische nietige leiding (koord [] args) {}
Probeer {}
String filename = args [0];
ChemicalReader reader = new ChemicalReader(filename);
ArrayList < tekenreeks > chemicaliën = reader.getChemicalNames();
MsdsCatalog catalogus = nieuwe MsdsCatalog();
MsdsWriter writer = new MsdsWriter();
voor (String chemische: chemicaliën) {}
MSDS msds = catalog.query(chemical);
Tekst string = msds.getText();
Writer.write (chemische, tekst);
}
Writer.Close();
} vangst (ArrayIndexOutOfBoundsException e) {}
System.out.println ("gebruik: App [bestandsnaam]");
System.out.println(e.getMessage());
}
}
}
Chemische Reader.java:
pakket org.freesideatlanta.msds;
importeren van java.util.ArrayList;
importeren van java.io.*;
openbare klasse ChemicalReader {}
De tekenreeksnaam;
ArrayList < tekenreeks > chemicalList = new ArrayList < tekenreeks > (); Lijst van alle chemische stoffen. Regelnummer hoort index + 1
String regel; Tekenreeks die in het bezit van de huidige regel van het bestand
BufferedReader bufRead;
openbare ChemicalReader (String filename) {}
naam = bestandsnaam;
}
openbare ArrayList < tekenreeks > getChemicalNames() {}
Probeer {}
FileReader-input = nieuwe FileReader(name);
bufRead = nieuwe BufferedReader(input);
System.out.println ("lezing begint nu...");
System.out.println("___________________________________________________________________________________");
System.out.println ();
lijn = bufRead.readLine(); leest de eerste regel
getAllChemicals();
bufRead.close(); Hiermee sluit u de lezer
replaceBadCharacters();
} vangst (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("fout! u zuigen op dit ");
}
Return chemicalList;
}
private void replaceBadCharacters() {}
Deze interates via de arraylist en
vervangt elke ruimte met een +
int size = chemicalList.size(); variabele voor de grootte van de matrix-lijst
voor (int i = 0; ik < grootte; i ++) {/ / één herhaling voor elke index in de arraylist
Tekenreeks een = chemicalList.get (i) .replaceAll ("", "+"); Hiermee maakt u een nieuwe variabele en vervangt de ruimte met een +
chemicalList.remove(i); haalt de oude tekenreeks bij de index
chemicalList.add(i, a); Hiermee voegt u de nieuwe tekenreeks
}
}
private void getAllChemicals() {}
Dit leest elke regel in het txt-document en
Zet elke regel in afzonderlijke index van een
ArrayList.
Probeer {}
terwijl (lijn! = null) {/ / while lus dat elke regel doorlopen totdat er niet is
System.out.println ("chemische:" + lijn); de chemische naam afgedrukt
chemicalList.add(line.trim()); toegevoegd aan de arraylist gemaakt boven
chemicalList.add(line);
lijn = "";
lijn = bufRead.readLine(); volgende regel
}
} vangst (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("fout! u zuigen op dit ");
}
}
}
MSDS.java:
pakket org.freesideatlanta.msds;
openbare klasse MSDS {}
De tekenreeksnaam;
String MSDStext;
openbare MSDS (String een) {}
naam = een;
}
public String getText () {}
Return MSDStext;
}
openbare nietige changeText(String a) {}
MSDStext = een;
}
}
MSDSCatalog.java:
pakket org.freesideatlanta.msds;
importeren van org.apache.http.*;
importeren van org.apache.http.client.*;
importeren van org.apache.http.impl.client.*;
importeren van org.apache.http.client.methods.*;
importeren van org.apache.http.util.*;
importeren van org.jsoup.Jsoup;
importeren van org.jsoup.nodes.Document;
importeren van org.jsoup.nodes.Element;
importeren van org.jsoup.select.Elements;
importeren van java.util.ArrayList;
importeren van java.io.*;
openbare klasse MsdsCatalog {}
HttpClient cliënt;
URLhere koord = "http://hazard.com/msds/gn.cgi?query=";
ArrayList < tekenreeks > errorsHere;
MSDS chemicalsMSDS;
Tekenreeks lichaam;
String edittedBody;
openbaar MsdsCatalog() {}
klant = nieuwe DefaultHttpClient(); Start de client
URLhere = "http://hazard.com/msds/gn.cgi?query="; Dit is het algemene deel van de URL voor elke site
errorsHere = new ArrayList < tekenreeks > ();
}
openbare MSDS query (String chemische) {}
Probeer {}
URLhere = "http://hazard.com/msds/gn.cgi?query=";
chemicalsMSDS = nieuwe MSDS(chemical);
System.out.println ("Volgende chemische" + "\n" + "chemische:" + chemische);
URLhere = URLhere + chemische stof is;
HttpGet methode = nieuwe HttpGet(URLhere); / / Hiermee voegt u de URL voor de methode
System.out.println(URLhere);
HttpResponse reactie = client.execute(method); krijgt een antwoord van de URL
HttpEntity entiteit = response.getEntity(); Hiermee maakt u een entiteit
lichaam = EntityUtils.toString(entity); de entiteit wordt omgezet in een tekenreeks en advertenties het naar het lichaam
Boole hasJtBakerDb = (body.indexOf("jtbaker.com") > = 0);
Boole hasSafetyCard = (body.indexOf("mf/cards/file") > = 0);
Boole hasFileCard = (body.indexOf("href=f") > = 0);
Als (hasJtBakerDb || hasSafetyCard || hasFileCard) {}
bevestigend geval
System.out.println ("neen Errors");
chemicalsMSDS = getMSDS();
} else {}
negatieve geval
System.out.println ("fout! DEZE CHEMISCHE STOF IS NIET GEVONDEN OP DE DATABASE!");
System.out.println ("Dit zal worden toegevoegd aan de lijst met fouten");
errorsHere.add(chemical);
}
} vangst (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("fout! u zuigen op dit ");
}
Return chemicalsMSDS;
}
privé MSDS getMSDS() {}
Boole hasSafetyCard = (body.indexOf("mf/cards/file") > = 0);
Boole hasFisher = (body.indexOf("fscim") > = 0);
Als (hasSafetyCard == true) {}
chemicalsMSDS = retrieveSafetyCard();
} else if (hasFisher == true) {}
chemicalsMSDS = retrieveFisher();
} else {}
chemicalsMSDS = retrieveMSDS();
}
Return chemicalsMSDS;
}
privé MSDS retrieveSafetyCard() {}
Probeer {}
Document abc = Jsoup.connect(URLhere).get();
Verwijzigingen voor elementen = abc.select("a[href]");
for (int i = 0; ik < links.size(); i ++) {}
Boole isSafetyCard = (links.get (i) .html () .indexOf ("Safety Card") > = 0);
Als (isSafetyCard) {}
NewURL koord = links.get(i).attr("abs:href");
HttpGet methode = nieuwe HttpGet(newURL);
HttpResponse reactie = client.execute(method);
HttpEntity entiteit = response.getEntity();
MSDSq koord = EntityUtils.toString(entity);
Document doc_one = Jsoup.parse(MSDSq);
MSDSq = doc_one.body().text();
chemicalsMSDS.changeText(MSDSq);
ik = links.size() + 10;
} else {}
}
}
} vangst (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("fout! u zuigen op dit ");
}
Return chemicalsMSDS;
}
privé MSDS retrieveFisher() {}
Probeer {}
Document abc = Jsoup.connect(URLhere).get();
Verwijzigingen voor elementen = abc.select("a[href]");
for (int i = 0; ik < links.size(); ik ++) {}
Boole isFisher = (links.get (i) .html () .indexOf ("Fisher") > = 0);
Als (isFisher == true) {}
NewURL koord = links.get(i).attr("abs:href");
HttpGet methode = nieuwe HttpGet(newURL);
HttpResponse reactie = client.execute(method);
HttpEntity entiteit = response.getEntity();
MSDSq koord = EntityUtils.toString(entity);
Document doc_one = Jsoup.parse(MSDSq);
MSDSq = doc_one.body().text();
chemicalsMSDS.changeText(MSDSq);
ik = links.size() + 10;
} else {}
}
}
} vangst (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("fout! u zuigen op dit ");
}
Return chemicalsMSDS;
}
privé MSDS retrieveMSDS() {}
Probeer {}
Document abc = Jsoup.connect(URLhere).get();
Verwijzigingen voor elementen = abc.select("a[href]");
for (int i = 0; ik < links.size(); ik ++) {}
Boole isJtBaker = (links.get (i) .html () .indexOf ("Mallinckrodt Baker") > = 0);
Boole isErrors = (links.get(i).attr("abs:href").indexOf("msds/errors.html") > = 0);
Boole isSearch = (links.get(i).attr("abs:href").indexOf("msds/search.html") > = 0);
Boole isArchive = (links.get(i).attr("abs:href").indexOf("msds/index.php") > = 0);
Als (isJtBaker == true || isErrors == true || isSearch == true || isArchive == true) {}
} else {}
NewURL koord = links.get(i).attr("abs:href");
HttpGet methode = nieuwe HttpGet(newURL);
HttpResponse reactie = client.execute(method);
HttpEntity entiteit = response.getEntity();
MSDSq koord = EntityUtils.toString(entity);
Document doc_one = Jsoup.parse(MSDSq);
MSDSq = doc_one.body().text();
chemicalsMSDS.changeText(MSDSq);
ik = links.size() + 10;
}
}
} vangst (IOException e) {}
System.out.println(e.getMessage());
System.out.println ("fout! u zuigen op dit ");
}
Return chemicalsMSDS;
}
private String deleteString (int. beginIndex, int. endIndex, String een) {}
ToBeDeleted koord = a.substring (beginIndex, endIndex);
keren a.replace (toBeDeleted, "");
}
}
MSDSWriter.java:
pakket org.freesideatlanta.msds;
importeren van java.io.*;
/*
* praznav
*/
openbare klasse MsdsWriter {}
FileWriter FileAid;
BufferedWriter
openbare MsdsWriter () {}
Probeer {}
FileAid = nieuwe FileWriter("output.txt");
uit = nieuwe BufferedWriter(fstream);
} catch (Exception e) {}
System.out.println(e.getMessage());
}
}
openbare nietige schrijven (String chemische, String tekst) {}
Probeer {}
out.Append(Chemical);
out.newLine();
out.Append("___");
out.newLine();
out.Append(text);
out.newLine();
out.newLine();
out.newLine();
} vangst (uitzondering e) {//Catch uitzondering indien van toepassing
System.err.println ("fout:" + e.getMessage());
}
}
openbare nietige close() {}
Probeer {}
out.Close();
} catch (Exception e) {}
System.out.println(e.getMessage());
}
}
}
Hier is een samenvatting van elk bestand:
--App--
bevat de belangrijkste methode en een instantie van elke andere klasse
--ChemicalReader--
Een chemische lijst samenstellen als een array-object van een soort
Omzetten van een chemische naam, met spaties in een URL-vriendelijke parameterlijst
--MsdsCatalog--
Een query uitvoeren op de 'gebruikersvriendelijke' chemische naam, en krijgt een resultaat
Zie als dit resultaat geldig voor onze doeleinden is
In termen van prioriteit: veiligheid kaart URL heeft de voorkeur, dan Fisher URL, dan gaan door de resterende links
--Msds--
Naam = msds.getChemicalName();
Tekst string = msds.getText();
--MsdsWriter--
Genereren output tekstbestanden in een sub-directory