Super CSV

Super CSV 2.1

Windows / Kasper B. Graversen / 96 / Úplná špecifikácia
Popis

Super CSV: Najlepší balík CSV pre vývojárov Java

Ak ste vývojár v jazyku Java, viete, aké dôležité je mať k dispozícii správne nástroje. A pokiaľ ide o prácu so súbormi CSV, Super CSV je balík, ktorý potrebujete. Táto bezplatná knižnica s otvoreným zdrojovým kódom uľahčuje čítanie a zápis súborov CSV v jazyku Java s podporou hlbokého mapovania a mapovania založeného na indexoch pomocou nového rozšírenia Dozer.

Čo však odlišuje Super CSV od iných knižníc? Jednak je navrhnutý tak, aby bol priateľský k programátorom. To znamená, že nemusíte byť odborníkom na analýzu alebo formátovanie údajov – Super CSV sa o všetko postará za vás. Je tiež vysoko konfigurovateľný, takže si môžete prispôsobiť jeho správanie tak, aby vyhovovalo vašim potrebám.

Pozrime sa bližšie na to, čo Super CSV dokáže.

Čítanie a zápis súborov CSV

Super CSV je vo svojej podstate všetko o čítaní a zapisovaní údajov vo formáte CSV (comma-separated value). Toto je bežný formát súboru používaný na výmenu údajov medzi rôznymi aplikáciami alebo systémami.

So Super CSV je čítanie súboru také jednoduché ako vytvorenie objektu čítačky a zavolanie jeho metódy read():

```java

ICsvBeanReader beanReader=new CsvBeanReader(new FileReader("data.csv"), CsvPreference.STANDARD_PREFERENCE);

skúste {

final String[] hlavička=beanReader.getHeader(true);

final CellProcessor[] procesory=getProcessors();

MyBean myBean;

while ((myBean=beanReader.read(MyBean.class, hlavička, procesory))!=null) {

System.out.println(myBean);

}

} nakoniec {

beanReader.close();

}

```

Tento kód načíta každý riadok súboru "data.csv" do inštancie MyBean (obyčajný starý objekt Java), pričom použije hlavičky z prvého riadku ako názvy vlastností. Tiež aplikuje niektoré bunkové procesory (viac o nich neskôr) na každé pole pred ich nastavením na objekt.

Zápis údajov funguje podobne:

```java

ICsvMapWriter mapWriter=new CsvMapWriter(new FileWriter("output.csv"), CsvPreference.STANDARD_PREFERENCE);

skúste {

final String[] hlavička=new String[]{"meno", "vek", "e-mail"};

mapWriter.writeHeader(hlavička);

Mapa<String,Objekt> riadok1=new HashMap<>();

row1.put("meno", "John");

row1.put("vek", 25);

row1.put("e-mail", "[email protected]");

//. .. pridať ďalšie riadky. ..

Zoznam<Mapa<String,Objekt>> riadky=Arrays.asList(riadok1,riadok2,riadok3);

mapWriter.write(riadky, hlavička, getProcessors());

} nakoniec {

mapWriter.close();

}

```

Tu vytvoríme objekt Writer, ktorý zapíše výstup do "output.csv". Potom vypíšeme niekoľko hlavičiek, za ktorými nasleduje niekoľko riadkov údajov (reprezentovaných ako mapy). Pred vypísaním každého poľa opäť použijeme niekoľko bunkových procesorov.

Údaje mapovania

Jednou z najvýkonnejších funkcií Super CVS je jeho schopnosť vykonávať hlboké mapovanie medzi objektmi a stĺpcami v súbore. To znamená, že ak váš vstupný alebo výstupný formát presne nezodpovedá vašej internej reprezentácii údajov (napr. ak sa názvy stĺpcov líšia), môžete medzi nimi stále jednoducho konvertovať.

Napríklad:

```java

public class Zákazník {

@CsvBindByName(column="Krstné meno")

private String krstné meno;

@CsvBindByName(column="Priezvisko")

private String lastName;

@CsvBindByName(column="E-mailová adresa")

súkromný reťazec e-mailu;

}

//. ..

Mapovač ICsvDozerBeanMapper =

nový CsvDozerBeanMapperBuilder()

. withMappingFiles(mappingFile)

. build();

Zoznam <Zákazníkov> zákazníkov =

mapper.mapToBeans(

csvInputStream,

Zákazník.trieda);

//. ..

```

Tu definujeme našu vlastnú triedu `Customer`, ktorá má polia anotované anotáciami `@CsvBindByName`, ktoré označujú, z akého stĺpca majú byť pri čítaní/zápise mapované.

Potom použijeme `CsvDozerMapper`, ktorý používa Dozer pod kapotou – ďalší populárny open source projekt – na vykonanie tejto konverzie automaticky na základe týchto anotácií.

Bunkové procesory

Ďalšou kľúčovou vlastnosťou Super CVS sú bunkové procesory – malé triedy, ktoré transformujú jednotlivé bunky počas operácií čítania alebo zápisu.

Napríklad:

```java

private static CellProcessor[] getProcessors() {

konečný CellProcessor[] procesory =

{

// overenie názvu

nové NotNull(),

// overenie veku a konverzia

new ParseInt(),

// overenie a konverzia e-mailu

new EmailValidator(),

};

vratné procesory;

}

```

V tomto príklade definujeme tri inštancie bunkového procesora: NotNull skontroluje, či je prítomná nejaká hodnota; ParseInt konvertuje hodnoty reťazca na celé čísla; EmailValidator skontroluje, či e-mailová adresa vyzerá ako platná.

Tieto inštancie procesora sa potom odovzdajú spolu s ďalšími parametrami pri vytváraní čítačiek/zapisovačiek/mapovačov.

Záver

Super CVS poskytuje vývojárom ľahko použiteľnú, ale výkonnú sadu nástrojov na prácu so súbormi s hodnotami oddelenými čiarkami v ich projektoch Java.

Či už máte čo do činenia s veľkými množinami údajov alebo len potrebujete niečo rýchle a špinavé pre ad-hoc úlohy,

Super CVS má všetko pokryté: od základných I/O operácií cez pokročilé mapovania až po komplexné validácie/konverzie cez bunkové spracovanie.

Tak prečo to neskúsiť ešte dnes?

Úplná špecifikácia
Vydavateľ Kasper B. Graversen
Stránka vydavateľa
Dátum vydania 2013-04-24
Dátum pridania 2013-04-25
Kategória Nástroje pre vývojárov
Podkategória Softvér Java
Verzia 2.1
Požiadavky OS Windows 2003, Windows 2000, Windows Vista, Windows, Windows 7, Windows XP
Požiadavky Java
cena Free
Stiahnutie za týždeň 0
Celkový počet stiahnutí 96

Comments: