2018-12-06 20:44:54 +01:00
package com.jFxKasse.datatypes ;
2018-12-06 23:15:06 +01:00
import java.util.ArrayList ;
2018-12-06 20:44:54 +01:00
public class PrintDataSplitted extends PrintData
{
2018-12-06 23:15:06 +01:00
private ArrayList < String > printString = new ArrayList < String > ( ) ;
private ArrayList < Category > categories = new ArrayList < Category > ( ) ;
2018-12-06 20:44:54 +01:00
2018-12-06 23:15:06 +01:00
private int categoryCount = 0 ;
2018-12-06 20:44:54 +01:00
/ * *
2018-12-06 23:15:06 +01:00
* Constructor with all data that is not in the DB
2018-12-06 20:44:54 +01:00
* @param lineBreak
* @param headerSpace
* @param footerSpace
* @param timeAndDatePrint
* @param header
* @param footer
* /
public PrintDataSplitted ( int lineBreak , int headerSpace , int footerSpace ,
String timeAndDatePrint , String header , String footer )
{
super ( lineBreak , headerSpace , footerSpace , timeAndDatePrint , header ,
footer ) ;
}
/ * *
* Generates the String
2018-12-06 23:15:06 +01:00
* @return the final Array with the Print Strings
2018-12-06 20:44:54 +01:00
* /
2018-12-06 23:15:06 +01:00
public ArrayList < String > getPrintStrings ( )
2018-12-06 20:44:54 +01:00
{
generatePrintString ( ) ;
2018-12-06 23:15:06 +01:00
return printString ;
2018-12-06 20:44:54 +01:00
}
@Override
protected void generatePrintString ( )
{
2018-12-06 23:15:06 +01:00
String firstBill ;
2018-12-06 20:44:54 +01:00
/* Header */
String header = " \ n " ;
for ( int i = 1 ; i < headerSpace ; i + + ) {
header = header + " \ n " ;
}
// This is the final header
header = header + setCenter ( this . header ) ;
/* Info */
String info = setRight ( " Bestellung: " , timeAndDateOrder ) + " \ n "
+ setRight ( " Druck: " , timeAndDatePrint ) + " \ n "
+ setRight ( " Bestellnummer: " , jobID ) ;
2018-12-06 23:15:06 +01:00
/* Splitted Bills */
2018-12-06 20:44:54 +01:00
2018-12-06 23:15:06 +01:00
/* Price */
2018-12-06 20:44:54 +01:00
2018-12-06 23:15:06 +01:00
String price = setRight ( " Gesamt: " , ( jobValue + " € " ) ) ;
2018-12-06 20:44:54 +01:00
2018-12-06 23:15:06 +01:00
/* Footer */
2018-12-06 20:44:54 +01:00
2018-12-06 23:15:06 +01:00
String footer = setCenter ( this . footer ) ;
2018-12-06 20:44:54 +01:00
2018-12-06 23:15:06 +01:00
for ( int i = 1 ; i < footerSpace ; i + + ) {
footer = footer + " \ n " ;
}
footer = footer + " _ " ;
2018-12-06 20:44:54 +01:00
2018-12-06 23:15:06 +01:00
/* Build first Print String */
firstBill = header + " \ n " + getSeparator ( ) + " \ n " + info + " \ n "
+ getSeparator ( ) + " \ n " + setCenter ( " Bon wurde aufgeteilt " ) + " \ n "
+ getSeparator ( ) + " \ n " + price + " \ n " + getSeparator ( ) + " \ n "
+ footer ;
printString . add ( firstBill ) ;
/* first bill ends here */
2018-12-06 23:59:01 +01:00
/* Categories in extra bills */
2018-12-06 23:15:06 +01:00
String positions = null ;
int posCount = positionsQuantity . length ( )
- positionsQuantity . replace ( " ; " , " " ) . length ( ) + 1 ;
String [ ] positionQuantity = positionsQuantity . split ( " ; " ) ;
String [ ] positionName = positionsName . split ( " ; " ) ;
String [ ] positionValue = positionsValue . split ( " ; " ) ;
String [ ] positionCategory = positionsCategory . split ( " ; " ) ;
for ( int i = 0 ; i < posCount ; i + + ) { // All different posNames
2018-12-06 20:44:54 +01:00
int quantity = Integer . parseInt ( positionQuantity [ i ] ) ;
2018-12-06 23:15:06 +01:00
insertToCategory ( quantity , positionName [ i ] , positionValue [ i ] ,
positionCategory [ i ] ) ;
2018-12-06 20:44:54 +01:00
}
2018-12-06 23:15:06 +01:00
// loops through all categories
for ( int i = 0 ; i < categories . size ( ) ; i + + ) {
2018-12-06 20:44:54 +01:00
2018-12-06 23:15:06 +01:00
String thisBill ;
2018-12-06 20:44:54 +01:00
2018-12-06 23:15:06 +01:00
/* Header */
header = " \ n " ;
for ( int o = 1 ; o < headerSpace ; o + + ) {
header = header + " \ n " ;
}
2018-12-06 20:44:54 +01:00
2018-12-06 23:15:06 +01:00
// This is the final header
header = header + setCenter ( this . header ) ;
/* Info */
info = setRight ( " Bestellung: " , timeAndDateOrder ) + " \ n "
+ setRight ( " Druck: " , timeAndDatePrint ) + " \ n "
+ setRight ( " Bestellnummer: " , jobID ) ;
/* Positions */
positions = categories . get ( i ) . getPositionsString ( ) ;
/* Footer */
2018-12-06 23:59:01 +01:00
footer = " \ n " ;
2018-12-06 23:15:06 +01:00
2018-12-06 23:59:01 +01:00
for ( int o = 2 ; o < footerSpace ; o + + ) {
2018-12-06 23:15:06 +01:00
footer = footer + " \ n " ;
}
footer = footer + " _ " ;
thisBill = header + " \ n " + getSeparator ( ) + " \ n " + info + " \ n "
+ getSeparator ( ) + " \ n "
+ setCenter ( categories . get ( i ) . getCategoryName ( ) ) + " \ n "
2018-12-06 23:59:01 +01:00
+ getSeparator ( ) + positions + " \ n " + getSeparator ( ) + " \ n "
+ footer ;
2018-12-06 23:15:06 +01:00
printString . add ( thisBill ) ;
2018-12-06 20:44:54 +01:00
}
2018-12-06 23:15:06 +01:00
}
private void insertToCategory ( int quantity , String name , String value ,
String category )
{
boolean createNewCategorie = true ;
for ( int i = 0 ; i < categoryCount ; i + + ) {
if ( category . equals ( categories . get ( i ) . getCategoryName ( ) ) ) {
categories . get ( i ) . addPosition ( quantity , name , value , this ) ;
createNewCategorie = false ;
}
}
if ( createNewCategorie ) {
// position has a new category
categories . add ( new Category ( category ) ) ;
categories . get ( categoryCount ) . addPosition ( quantity , name , value , this ) ;
categoryCount + + ;
}
2018-12-06 20:44:54 +01:00
}
}