Home Download Info
Java based GAEB data exchange.

Generally, please refer to the download section to fetch the Javadoc files there.

Release Notes

Changes in Version 1.0

  • General framework set up
  • Added support for parsing/writing GAEB90 files

Help / Samples

Writing a valid GAEB90 file

package de.ksquared.test.jgaeb.gaeb1990;

import static de.ksquared.jgaeb.gaeb1990.file.File.Identifier.*;
import static de.ksquared.jgaeb.gaeb1990.frame.Frame.Type.*;
import static de.ksquared.jgaeb.gaeb1990.group.Group.Name.*;
import java.io.IOException;
import java.util.GregorianCalendar;
import de.ksquared.jgaeb.gaeb1990.element.Element;
import de.ksquared.jgaeb.gaeb1990.element.Element.Type;
import de.ksquared.jgaeb.gaeb1990.file.FileBuilder;
import de.ksquared.jgaeb.gaeb1990.frame.Frame;
import de.ksquared.jgaeb.gaeb1990.frame.FrameBuilder;
import de.ksquared.jgaeb.gaeb1990.group.GroupBuilder;

public class GAEB1990WriteTest {
	public static void main(String[] args) {
		FileBuilder file;
		GroupBuilder group01,group02,group05;
		FrameBuilder frame;
		
		file = new FileBuilder(KE_86); //optional group: GR_03 (this one could also be template of KE_84, with ZA_07 and without ZA_25)
		
		group01 = file.newGroup(GR_01);
		
		frame = group01.newFrame(Frame.Type.ZA_T0);
		
		frame = group01.newFrame(Frame.Type.ZA_T1);
		frame.addElement(Element.Type.TEXT,"Contract Information");
		
		frame = group01.newFrame(Frame.Type.ZA_T1);
		frame.addElement(Element.Type.TEXT,"--------------------------");
		
		frame = group01.newFrame(Frame.Type.ZA_T1);
		frame.addElement(Element.Type.TEXT,"Copyright Kristian Kraljic");
		
		frame = group01.newFrame(Frame.Type.ZA_T9);
		
		group02 = file.newGroup(GR_02); //optional: ZA_06, ZA_07
		
		frame = group02.newFrame(ZA_00);
		frame.addElement(KE_86.getDP());
		frame.addElement(Type.KURZLANG,"L"); //K, L or space on 84
		frame.addElement(Type.OZMASKE,"PPPPPPPPP"); //only positions in this file
		frame.addElement(Element.VERSDTA);
		
		frame = group02.newFrame(ZA_01);
		frame.addElement(Type.LVBEZ,"jGAEB Write Part (Contract description)");
		frame.addElement(Type.LVDATUM,GregorianCalendar.getInstance());
		frame.addElement(Type.KZPREIS,true);
		
		frame = group02.newFrame(ZA_02);
		frame.addElement(Type.PROBEZ,"Develop the jGAEB-Testsuite (Project description)");
		
		frame = group02.newFrame(ZA_03);
		frame.addElement(Type.AGBEZ,"kSquared (Employer)");
		
		frame = group02.newFrame(ZA_04);
		frame.addElement(Type.ANBEZ,"Everybody (Agent)");
		
		frame = group02.newFrame(ZA_08);
		frame.addElement(Type.WAEKU,"EURO");
		frame.addElement(Type.WAEBEZ,"EURO");
		
		group05 = group02.newGroup(GR_05); //optional ZA_24, ZA_30
		
		//first item (item number 1)
		frame = group05.newFrame(ZA_21);		
		frame.addElement(Type.OZ,"000000001"); //Ordnungszahl (Pos-No.)
		frame.addElement(Type.POSART1,"N"); //(N)ormalposition, (G)rundposition, W(A)hlposition, (S)Tundenlohnarbeiten
		frame.addElement(Type.POSART2,"N"); //(N)ormalposition, B(E)darfsposition, Bedarfsposition (M)it Gesamtbetrag
		frame.addElement(Type.POSTYP,"N"); //(N)ormalposition, (L)eitposition
		frame.addElement(Type.MENGE,1);
		
		frame = group05.newFrame(ZA_23);
		frame.addElement(Type.OZ,"000000001"); //Ordnungszahl (Pos-No.)
		
		frame = group05.newFrame(ZA_25);
		frame.addElement(Type.KURZTEXT,"Specification document (Item short text)");
		
		frame = group05.newFrame(ZA_26);
		frame.addElement(Type.LANGTEXT,"Write a valid specification document (Item long text)");

		//second item (item number 1)
		group05 = group02.newGroup(GR_05); //optional ZA_24, ZA_30
		
		frame = group05.newFrame(ZA_21);		
		frame.addElement(Type.OZ,"000000002"); //Ordnungszahl (Pos-No.)
		frame.addElement(Type.POSART1,"N"); //(N)ormalposition, (G)rundposition, W(A)hlposition, (S)Tundenlohnarbeiten
		frame.addElement(Type.POSART2,"N"); //(N)ormalposition, B(E)darfsposition, Bedarfsposition (M)it Gesamtbetrag
		frame.addElement(Type.POSTYP,"N"); //(N)ormalposition, (L)eitposition
		frame.addElement(Type.MENGE,10);
		frame.addElement(Type.EINHEIT,"HOUR");
		
		frame = group05.newFrame(ZA_23);
		frame.addElement(Type.OZ,"000000002"); //Ordnungszahl (Pos-No.)
		
		frame = group05.newFrame(ZA_25);
		frame.addElement(Type.KURZTEXT,"Prototype development (Item short text)");
		
		frame = group05.newFrame(ZA_26);
		frame.addElement(Type.LANGTEXT,"Write a working prototype (Item long text)");
		
		frame = group02.newFrame(ZA_99);
		frame.addElement(Type.ANZTEIL,1); //number of GR_05's
		
		try {
			file.getFile().writeTo(new java.io.File("file"+KE_86.getSuffix()));
		}	catch(IOException e) { e.printStackTrace(); }
	}
}

Reading & parsing a GAEB90 file

package de.ksquared.test.jgaeb.gaeb1990;

import static de.ksquared.jgaeb.gaeb1990.file.File.Identifier.*;
import static de.ksquared.jgaeb.gaeb1990.element.Element.Type.*;
import java.io.IOException;
import de.ksquared.jgaeb.gaeb1990.file.File;
import de.ksquared.jgaeb.gaeb1990.frame.Frame;
import de.ksquared.jgaeb.gaeb1990.frame.Frame.Type;
import de.ksquared.jgaeb.gaeb1990.group.Group;
import de.ksquared.jgaeb.gaeb1990.group.Group.Name;
import de.ksquared.jgaeb.gaeb1990.group.GroupElement;

public class GAEB1990ReadTest {
	public static void main(String[] args) throws IOException {
		File file = File.readFrom(new java.io.File("file"+KE_86.getSuffix()));
		for(Group group:file.getGroups())
			printGroup(group,0);
	}
	private static void printGroup(Group group,int padding) {
		if(group==null)
			return;
		Name name = group.getName();
		printPadding("-- "+(name!=null?name.getName():"Unnamed Group")+" --",padding);
		if(Group.Name.GR_05.equals(name)) {
			printPadding(group.getFrame(Type.ZA_21).getElement(MENGE).getValue()+"x "+group.getFrame(Type.ZA_25).getElement(KURZTEXT),padding+2);
			printPadding(group.getFrame(Type.ZA_26).getElement(LANGTEXT),padding+4);
			printGroup(group.getGroup(Group.Name.GR_05),padding); //maybe there is another 05-group
		} else {
			for(GroupElement element:group.getElements())
				if(element instanceof Frame) {
					Frame frame = (Frame)element;
					switch(frame.getType()) {
					case ZA_T1: printPadding(frame.getElement(TEXT),padding+2); break;
					case ZA_01: printPadding(frame.getElement(LVBEZ)+" ("+frame.getElement(LVDATUM)+")",padding+2); break;
					case ZA_02: printPadding("Project description: "+frame.getElement(PROBEZ),padding+2); break;
					case ZA_03: printPadding("Employer description: "+frame.getElement(AGBEZ),padding+4); break;
					case ZA_04: printPadding("Agent description: "+frame.getElement(ANBEZ),padding+4); break; }
				} else if(element instanceof Group)
					printGroup((Group)element,padding+2);
		}
	}
	private static void printPadding(Object print,int padding) {
		for(int position=0;position<padding;position++)
			System.out.print(' ');
		System.out.println(print);
	}
}

Documentation

At the moment no standard documentation of the jGAEB framework is available. Please take a look at the JavaDoc files from the download section. For the standard (German) GAEB1990 documentation please refer to the GAEB Homepage.
 

Newsletter

Not available so far...