Automatische MSDS Finder / Online gegevensherwinning (2 / 2 stap)

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

Gerelateerde Artikelen

De plant pot

De plant pot

Hallo menseneen slimme plant pot die u kunt e-mail zodra dorst, warm/koud, slapen etc. gratis het als een mobiele telefoon, geen voorafgaande tuinieren, elektrische- of programmeertaal ervaring vereist.-update 7: draadloos opladen & zonne-huid 2.0 (i
The Plant Box

The Plant Box

Hallo mensenUPDATE:Ik ben het vak van de plant. Ik ben momenteel in beta testing fase. Ik ben stabiel maar ik moet upgrades. Ik weergeven en planten gezond te houden...Meer informatie.Facebook.Wat is een fabriek doos? plant vak is een gecontroleerde
De Plant plank mini

De Plant plank mini

Hallo mensenIk ben de plant plankmini. Ik ben momenteel in beta testing fase. Ik ben stabiel maar ik moet upgrades. .UPDATE: de plant plank basicFacebook.Wat is een plant plank mini? plant plank mini is een slimme plank ontworpen voor het weergeven e
The Plant Doctor

The Plant Doctor

Hallo mensenIk ben de Arts van de Plant. Ik ben momenteel in beta testing fase. Ik ben stabiel maar ik moet upgrades. .UPDATE: de plant dokter basicFacebook.Wat is de plant dokter? plant arts is een mobiel apparaat. mijn doel is om de planten gezond
Eenvoudige sterk zuur en Base titratie

Eenvoudige sterk zuur en Base titratie

IntroductieEen titratie is een proces waarmee het evenwicht ratio's, of gelijkwaardige hoeveelheden, chemicaliën worden waargenomen door een verandering in kleur. De karakteristieke indicator dat een oplossing evenwicht bereikt is een kleurveranderin
Automatische bekkens van oude printer

Automatische bekkens van oude printer

Hallo iedereen! Ik wil je laten zien hoe een automatische bekkens van oude pinter om onderdelen te maken.Stap 1: materialen Hebt u nodig:-Gemakkelijk-stap stepper motor stuurprogramma-mechanica van oude printer-Stappenmotor (vanaf pronter)-Hekschakel
Start een Element collectie - How to Find monsters in alledaagse plaatsen

Start een Element collectie - How to Find monsters in alledaagse plaatsen

Dit instructable toont u hoe te vinden sommige verrassend goed, en vooral goedkoop, monsters van de elementen in tweedehands winkels, munt winkels, Wal-Mart of gebroken dingen die u uit elkaar te halen. Scroll naar beneden en Zie voor jezelf! Of je n
Ambient Batman Lamp - Arduino | Foto-Resistive| Automatisch aan wanneer donkere | MultiColor

Ambient Batman Lamp - Arduino | Foto-Resistive| Automatisch aan wanneer donkere | MultiColor

Hallo iedereen! Dit is mijn eerste instructables en eventuele suggesties zou zeer gewaardeerd worden. Er zijn vele versies van de batman-lamp en ik dacht om showcase mijn versie. Deze lamp is afhankelijk van het licht, d.w.z. licht met behulp van een
Automatische Plant drenken System

Automatische Plant drenken System

maakte ik een automatische plant water geven systeem met behulp van een aquarium pomp en elektrische timer.De materialen kostte me ongeveer 60 dollar, waarvan ik denk dat is een beetje steil. Je kan waarschijnlijk dit doen voor ongeveer $40 met behul
Automatische schaduw detectie Bike staart licht

Automatische schaduw detectie Bike staart licht

Dit project is voor een fiets achterlicht dat automatisch wordt ingeschakeld als het donker wordt. Dit bespaart veel accu-energie tijdens de dag waar er zijn tal van schaduwen zoals tunnels, gebouwen of bomen waar u zijn zichtbaar wilt zonder dat u h
Automatische geactiveerd knipperen signaal

Automatische geactiveerd knipperen signaal

heb je ooit gekregen in een ongeval terwijl het berijden van een fiets, 's nachts of dicht bij een ongeval? Gekregen honked bij gevolg van onverantwoordelijke stuurprogramma's die geen aandacht aan de weg? Of gewoon wilt fiets rijden veiliger maken?
Raspberry Pi IoT ticketprinter voor online winkels

Raspberry Pi IoT ticketprinter voor online winkels

Hebt u een online winkel?Bent u een maker?Wilt u het optimaliseren van het verkoopproces?Als je ja antwoord op alle vragen, houd u lezing omdat dit de instructable die u zoekt. Ook als u Nee tegen een zeggen of meer vragen te blijven lezen, kunt miss
Bekijk uw PCB ontwerp in 3D Online kostenloos

Bekijk uw PCB ontwerp in 3D Online kostenloos

of je een eerste keer printplaat ontwerper, maar je hebt gedaan het jarenlang, u weet hoe moeilijk het kan zijn om te visualiseren lay-out, spatiëring en relatieve grootte in PCB-indeling software.  U zou kunnen hebben ook ervaren dat ongemakkelijk "
Gratis, juridische, online TV op uw TV-toestel

Gratis, juridische, online TV op uw TV-toestel

feit 1: veel TV-zenders bieden gratis online streaming.Feit 2: breedbandverbindingen zijn overal verkrijgbaar.Feit 3: videokaarten met TV-uitgang zijn gemeenschappelijk en relatief goedkoop.Toevoeging: toegang tot een online TV-stroom (of zet een DVD