BMEcat-Katalogkonverter
Die Katalogerstellung nach dem BMEcat-Standard ist ein aufwändiges Unterfangen.
BMEcat (BMEcat.org) ist ein System zum Katalogaustausch zwischen Handelspartnern, welches es vor allem bei unterschiedlichen Systemen möglich macht, die jeweiligen anderen Kataloge zu bearbeiten. Die Kataloge werden über XML kodiert und sind daher von allen Systemen lesbar und bearbeitbar.
Die ComputerMutter GmbH hat eine Bibliothek entwickelt, solche Kataloge automatisch zu erstellen.
Mit dieser Bibliothek wird die Erstellung eines Katalogs vereinfacht, da nur noch entsprechende Methoden implementiert werden müssen. Diese werden dann von einem Generator aufgerufen, welcher den BMECat Katalog erstellt.
Der Generator und die Interface/Klassenbibliothek wird von der ComputerMutter GmbH zur Zeit kostenfrei zur Verfügung gestellt.
Kopfdaten
Jeder BMEcat-Katalog beginnt mit einem Header. Dieser Header hat gewisse Pflichtfelder (z.B. die Version, die Sprache, den Versender, ...) und einige Kann-Felder.
Um einen Header zu verwenden, wird das IHeader-Interface implementiert.
IHeader head = new IHeader () {
public IAgreement getAgreement() {
de.comu.comunication.bmecat12.header.Agreement agr =
new de.comu.comunication.bmecat12.header.Agreement ();
agr.setId ( "MyAgreement" ); // dieses könnte auch aus einer Datenbank stammen...
agr.setStartDate ( new java.util.Date () );
agr.setEndDate ( new java.util.Date () );
return agr;
}
public IBuyer getBuyer() {
de.comu.comunication.bmecat12.header.Buyer buy =
new de.comu.comunication.bmecat12.header.Buyer ();
buy.setId ( ... );
buy.set...
}
public ICatalog getCatalog() {
Catalog c = new Catalog ();
c.setLanguage ( "DE" );
c.setVersion ( "1.2" );
c.setId ( "0000" );
c.setDate ( new java.util.Date() );
return c;
}
public String getGeneratorInfo() {
return "DemoBMECat";
}
public IHeaderSettings getSettings() {
IHeaderSettings headerSettings = new de.comu.comunication.bmecat12.header.HeaderSettings ();
// leere Settings...
return headerSettings;
}
public ISupplier getSupplier() {
de.comu.comunication.bmecat12.header.Supplier supplier =
new de.comu.comunication.bmecat12.header.Supplier ( );
supplier.setName( "Supplier Name");
supplier.set...
return supplier;
}
public IUserDefinedExtension getUserDefinedExtensionTag() {
// keine Extensions
return null;
}
};
Katalogdaten
Im BMEcat-Katalog kann auch eine Katalogstruktur abgebildet werden.
ICatalog catalog = new ICatalog () {
public ICatalogSettings getSettings() {
de.comu.comunication.bmecat12.catalog.CatalogSettings cs =
new de.comu.comunication.bmecat12.catalog.CatalogSettings();
return cs;
}
public TreeNode getTree() {
TreeNode cat1 = new TreeNode(null,"10-00-00-00","Computer");
// verknüpfe cat1 mit catHard
TreeNode catHard = new TreeNode(cat1,"10-01-00-00","Hardware");
TreeNode catHardPrint = new TreeNode(catHard,"10-01-01-00","Printer");
TreeNode catHardNote = new TreeNode(catHard,"10-01-02-00","Notebook");
TreeNode catSoft = new TreeNode(cat1,"10-02-00-00","Software");
TreeNode catSoftWin = new TreeNode(catSoft,"10-02-01-00","Windows");
TreeNode catSoftLin = new TreeNode(catSoft,"10-02-02-00","Linux");
return cat1;
}
};
Artikeldaten
Artikeldaten werden als Liste behandelt und über das IArticle-Interface angesprochen.
IArticleList article = new IArticleList() {
Vector articles = new Vector();
IArticle iart = new de.comu.comunication.bmecat12.article.AbstractArticle () {
public String getId(){return "ARTID1";}
public IArticleFeature getArticleFeature() {
return new IArticleFeature() {
public java.util.Vector getFeatureList () { return new java.util.Vector(); }
public java.lang.String getGroupId (){ return "no id"; }
public java.lang.String getSystemName () { return "noname"; }
};
}
public IArticleDetails getArticleDetails() {
return new de.comu.comunication.bmecat12.article.AbstractArticleDetails() {
public String getDescShort() {
return "Artikel 1";
}
};
}
public IArticleOrderDetails getArticleOrderDetails() {
return new de.comu.comunication.bmecat12.article.AbstractArticleOrderDetails() {
public String getOrderUnit() { return "1 PCE"; }
};
}
public IArticlePriceDetails getArticlePriceDetails() {
return new de.comu.comunication.bmecat12.article.SimpleArticlePriceDetails(
new AbstractArticlePrice() {
public java.lang.String getAmount() { return "10.00"; }
public java.lang.String getType() { return PRICETYPE_NET_LIST; }
}
);
}
};
articles.add(iart);
}
public IIterator iterator() {
return new IIterator() {
private int akt = 0;
public boolean hasNext() { return akt < articles.size(); }
public java.lang.Object next() {
Object o = articles.get(akt);
akt++; return o;
}
public void remove() { throw new Error("Remove not implemented"); }
};
}
};
Demoanwendung
Eine minimale Demoanwendung wurde implementiert, welche die wichtigsten, oben beschriebenen Felder des Katalogs abdeckt.
Download des Generators mit Interfaces und benötigten Bibliotheken.
Download der DemoAnwendung
Download der Dokumentation oder online abrufbar.