Last active
August 29, 2015 14:16
-
-
Save ralfw/3bfb17d19c081fcf7a7f to your computer and use it in GitHub Desktop.
CSV Viewer Inkrement #1 - Erste Seite anzeigen
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* CSV Viewer Inkrement #1 - Erste Seite anzeigen */ | |
String[] tabellenzeilen = FirstPage(args) | |
tabellenzeilen.each {l -> println(l)} | |
String[] FirstPage(String[] args) { | |
def dateiname = Dateiname_ermitteln(args) | |
def seitenlänge = Seitenlänge_ermitteln(args) | |
def zeilen = Datei_laden(dateiname) | |
def seitenzeilen = Erste_Seite_extrahieren(zeilen, seitenlänge) | |
def seitenrecords = Records_bilden(seitenzeilen) | |
def spaltenbreiten = Spaltenbreiten_ermitteln(seitenrecords) | |
return Seite_formatieren(seitenrecords, spaltenbreiten) | |
} | |
def Dateiname_ermitteln(String[] args) { | |
return args[0] | |
} | |
int Seitenlänge_ermitteln(String[] args) { | |
return args[1].toInteger() | |
} | |
String[] Datei_laden(String dateiname) { | |
return new File(dateiname).text.split("\n") | |
} | |
String[] Erste_Seite_extrahieren(String[] zeilen, int seitenlänge) { | |
def seite = new ArrayList<String>() | |
seite.add(zeilen.first()) | |
seite.addAll(zeilen.drop(1).take(seitenlänge)) | |
return seite | |
} | |
List<String[]> Records_bilden(String[] zeilen) { | |
return zeilen.collect({l -> l.split(";")}) | |
} | |
int[] Spaltenbreiten_ermitteln(List<String[]> records) { | |
def spaltenbreiten = [] | |
(1..records.first().size()).each {spaltenbreiten.add(0)} | |
(0..records.first().size()-1).each {i -> | |
records.each({r -> if (spaltenbreiten[i]<r[i].size()) spaltenbreiten[i] = r[i].size()}) | |
} | |
return spaltenbreiten | |
} | |
def Seite_formatieren(List<String[]> records, int[] spaltenbreiten) { | |
def tabelle = [] | |
tabelle.add(Record_formatieren(records.first(), spaltenbreiten)) | |
tabelle.add(Unterstreichung_formatieren(spaltenbreiten)) | |
tabelle.addAll(records.drop(1).collect({r -> Record_formatieren(r, spaltenbreiten)})) | |
return tabelle | |
} | |
def Unterstreichung_formatieren(int[] spaltenbreiten) { | |
(0..spaltenbreiten.size()-1).collect {i -> "-".padRight(spaltenbreiten[i], "-")} | |
.join("+") | |
} | |
def Record_formatieren(String[] record, int[] spaltenbreiten) { | |
return [record, spaltenbreiten].transpose() | |
.collect{v,b -> v.padRight(b)} | |
.join("|") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment