![JAR search and dependency download from the Maven repository](/logo.png)
se.javasoft.generated.framework.development.meta.parser.ModelParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of metamodel Show documentation
Show all versions of metamodel Show documentation
The meta model for javasoft.se development framework
The newest version!
/**
* Warning!
*
* Generated source file. Changes in this file will be overwritten
* next time a generation is performed
*
**/
package se.javasoft.generated.framework.development.meta.parser;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import se.javasoft.framework.development.meta.model.IApplication;
import se.javasoft.framework.development.meta.model.IModel;
import se.javasoft.framework.development.meta.model.IModelDatatype;
import se.javasoft.framework.development.meta.model.IModelGroup;
import se.javasoft.generated.framework.development.meta.model.IGenerate;
import se.javasoft.generated.framework.development.meta.model.impl.ModelRegistry;
import se.javasoft.generated.framework.development.meta.model.impl.DatatypeString;
import se.javasoft.generated.framework.development.meta.model.impl.DatatypeText;
import se.javasoft.generated.framework.development.meta.model.impl.DatatypeTimestamp;
import se.javasoft.generated.framework.development.meta.model.impl.DatatypeBoolean;
import se.javasoft.generated.framework.development.meta.model.impl.DatatypeInteger;
import se.javasoft.generated.framework.development.meta.model.impl.DatatypeDouble;
import se.javasoft.generated.framework.development.meta.model.impl.DatatypeSelectone;
import se.javasoft.generated.framework.development.meta.model.impl.DatatypeList;
import se.javasoft.generated.framework.development.meta.model.impl.DatatypeSet;
public abstract class ModelParser extends AbstractMojo implements IGenerate {
private enum TYPE {NULL, APPLICATION, MODEL, MODELGROUP, MODELDATATYPE};
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
try {
ModelHandler modelHandler = new ModelHandler();
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
parser.parse(getModelFile(), modelHandler);
StringBuffer result = new StringBuffer();
IApplication application = modelHandler.getApplication();
startApplicationApplication(application, result);
Collection models = application.getModels();
for(IModel model : models) {
startModelModel(model, result);
Collection modelGroups = model.getModelGroups();
for(IModelGroup modelGroup : modelGroups) {
startModelGroupModelgroup(modelGroup, result);
Collection modelDatatypes = modelGroup.getModelDatatypes();
for(IModelDatatype modelDatatype : modelDatatypes) {
handleDatatype(modelGroup, modelDatatype, result);
}
endModelGroupModelgroup(modelGroup, result);
}
endModelModel(model, result);
}
endApplicationApplication(application, result);
writeResult(result);
writeFactoryPropertyFile();
} catch (Exception e) {
throw new MojoExecutionException(e.getMessage(), e);
}
}
public void handleDatatype(IModelGroup modelGroup, IModelDatatype modelDatatype, StringBuffer result) throws Exception {
modelDatatype(modelDatatype, result);
if (modelDatatype instanceof DatatypeString) {
modelDatatypeString(modelGroup, (DatatypeString) modelDatatype, result);
}
if (modelDatatype instanceof DatatypeText) {
modelDatatypeText(modelGroup, (DatatypeText) modelDatatype, result);
}
if (modelDatatype instanceof DatatypeTimestamp) {
modelDatatypeTimestamp(modelGroup, (DatatypeTimestamp) modelDatatype, result);
}
if (modelDatatype instanceof DatatypeBoolean) {
modelDatatypeBoolean(modelGroup, (DatatypeBoolean) modelDatatype, result);
}
if (modelDatatype instanceof DatatypeInteger) {
modelDatatypeInteger(modelGroup, (DatatypeInteger) modelDatatype, result);
}
if (modelDatatype instanceof DatatypeDouble) {
modelDatatypeDouble(modelGroup, (DatatypeDouble) modelDatatype, result);
}
if (modelDatatype instanceof DatatypeSelectone) {
modelDatatypeSelectone(modelGroup, (DatatypeSelectone) modelDatatype, result);
}
if (modelDatatype instanceof DatatypeList) {
modelDatatypeList(modelGroup, (DatatypeList) modelDatatype, result);
}
if (modelDatatype instanceof DatatypeSet) {
modelDatatypeSet(modelGroup, (DatatypeSet) modelDatatype, result);
}
}
protected abstract File getModelFile();
protected abstract void writeResult(StringBuffer result);
class ModelHandler extends DefaultHandler {
private TYPE type = TYPE.NULL;
private IApplication application;
private IModel model = null;
private IModelGroup modelGroup = null;
private IModelDatatype modelDatatype = null;
public IApplication getApplication() {
return application;
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
try {
if (qName.equals("application")) {
type = TYPE.APPLICATION;
application = ModelRegistry.getFactory().getApplication(qName, attributes);
} else if (type.equals(TYPE.APPLICATION)) {
type = TYPE.MODEL;
model = ModelRegistry.getFactory().getModel(qName, attributes);
application.addModel(model);
} else if (type.equals(TYPE.MODEL)) {
type = TYPE.MODELGROUP;
modelGroup = ModelRegistry.getFactory().getModelGroup(qName, attributes);
model.addModelGroup(modelGroup);
} else if (type.equals(TYPE.MODELGROUP)) {
type = TYPE.MODELDATATYPE;
modelDatatype = ModelRegistry.getFactory().getModelDatatype(qName, attributes);
modelGroup.addModelDatatype(modelDatatype);
}
} catch (Exception e) {
throw new SAXException(e);
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if (type.equals(TYPE.APPLICATION)) {
type = TYPE.NULL;
} else if (type.equals(TYPE.MODEL)) {
type = TYPE.APPLICATION;
} else if (type.equals(TYPE.MODELGROUP)) {
type = TYPE.MODEL;
} else if (type.equals(TYPE.MODELDATATYPE)) {
type = TYPE.MODELGROUP;
}
}
}
protected void updateProperties(File propertiesFile, String key, String value) throws MojoExecutionException {
try {
Properties properties = new Properties() {
private static final long serialVersionUID = 1L;
@Override
public synchronized Enumeration
© 2015 - 2025 Weber Informatics LLC | Privacy Policy