/*******************************************************************************
* Copyright 2010 Simon Mieth
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package org.kabeja.dxf.parser;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import org.kabeja.dxf.parser.entities.DXF3DFaceHandler;
import org.kabeja.dxf.parser.entities.DXF3DSolidHandler;
import org.kabeja.dxf.parser.entities.DXFArcHandler;
import org.kabeja.dxf.parser.entities.DXFAttribDefinitionHandler;
import org.kabeja.dxf.parser.entities.DXFAttribHandler;
import org.kabeja.dxf.parser.entities.DXFBodyHandler;
import org.kabeja.dxf.parser.entities.DXFCircleHandler;
import org.kabeja.dxf.parser.entities.DXFDimensionHandler;
import org.kabeja.dxf.parser.entities.DXFEllipseHandler;
import org.kabeja.dxf.parser.entities.DXFHatchHandler;
import org.kabeja.dxf.parser.entities.DXFImageHandler;
import org.kabeja.dxf.parser.entities.DXFInsertHandler;
import org.kabeja.dxf.parser.entities.DXFLWPolylineHandler;
import org.kabeja.dxf.parser.entities.DXFLeaderHandler;
import org.kabeja.dxf.parser.entities.DXFLineHandler;
import org.kabeja.dxf.parser.entities.DXFMLineHandler;
import org.kabeja.dxf.parser.entities.DXFMTextHandler;
import org.kabeja.dxf.parser.entities.DXFPointHandler;
import org.kabeja.dxf.parser.entities.DXFPolylineHandler;
import org.kabeja.dxf.parser.entities.DXFRayHandler;
import org.kabeja.dxf.parser.entities.DXFRegionHandler;
import org.kabeja.dxf.parser.entities.DXFSolidHandler;
import org.kabeja.dxf.parser.entities.DXFSplineHandler;
import org.kabeja.dxf.parser.entities.DXFTextHandler;
import org.kabeja.dxf.parser.entities.DXFToleranceHandler;
import org.kabeja.dxf.parser.entities.DXFTraceHandler;
import org.kabeja.dxf.parser.entities.DXFViewportHandler;
import org.kabeja.dxf.parser.entities.DXFXLineHandler;
import org.kabeja.dxf.parser.objects.DXFDictionaryHandler;
import org.kabeja.dxf.parser.objects.DXFImageDefHandler;
import org.kabeja.dxf.parser.objects.DXFLayoutHandler;
import org.kabeja.dxf.parser.objects.DXFMLineStyleHandler;
import org.kabeja.dxf.parser.objects.DXFPlotsettingsHandler;
import org.kabeja.dxf.parser.table.DXFDimensionStyleTableHandler;
import org.kabeja.dxf.parser.table.DXFLayerTableHandler;
import org.kabeja.dxf.parser.table.DXFLineTypeTableHandler;
import org.kabeja.dxf.parser.table.DXFStyleTableHandler;
import org.kabeja.dxf.parser.table.DXFVPortTableHandler;
import org.kabeja.dxf.parser.table.DXFViewTableHandler;
import org.kabeja.parser.Parser;
/**
* @author <a href="mailto:simon.mieth@gmx.de>Simon Mieth</a>
*
*
*
*/
public class DXFParserBuilder {
public static Parser createDefaultParser() {
DXFParser parser = new DXFParser();
DXFHandler handler;
handler = new DXFHeaderSectionHandler();
parser.addHandler(handler);
// the blocks handler
DXFHandlerManager handlerManager = new DXFBlocksSectionHandler();
parser.addHandler(handlerManager);
DXFHandler h = new DXFLineHandler();
handlerManager.addHandler(h);
h = new DXFCircleHandler();
handlerManager.addHandler(h);
h = new DXFArcHandler();
handlerManager.addHandler(h);
h = new DXFAttribHandler();
handlerManager.addHandler(h);
h = new DXFAttribDefinitionHandler();
handlerManager.addHandler(h);
h = new DXFPolylineHandler();
handlerManager.addHandler(h);
h = new DXFLWPolylineHandler();
handlerManager.addHandler(h);
h = new DXFMTextHandler();
handlerManager.addHandler(h);
h = new DXFTextHandler();
handlerManager.addHandler(h);
h = new DXFInsertHandler();
handlerManager.addHandler(h);
h = new DXFEllipseHandler();
handlerManager.addHandler(h);
h = new DXFSolidHandler();
handlerManager.addHandler(h);
h = new DXFTraceHandler();
handlerManager.addHandler(h);
h = new DXFDimensionHandler();
handlerManager.addHandler(h);
h = new DXFHatchHandler();
handlerManager.addHandler(h);
h = new DXFImageHandler();
handlerManager.addHandler(h);
h = new DXF3DFaceHandler();
handlerManager.addHandler(h);
h = new DXFRayHandler();
handlerManager.addHandler(h);
h = new DXFXLineHandler();
handlerManager.addHandler(h);
h = new DXFRegionHandler();
handlerManager.addHandler(h);
h = new DXFPointHandler();
handlerManager.addHandler(h);
h = new DXFBodyHandler();
handlerManager.addHandler(h);
h = new DXF3DSolidHandler();
handlerManager.addHandler(h);
h = new DXFSplineHandler();
handlerManager.addHandler(h);
h = new DXFMLineHandler();
handlerManager.addHandler(h);
h = new DXFLeaderHandler();
handlerManager.addHandler(h);
h = new DXFToleranceHandler();
handlerManager.addHandler(h);
h = new DXFViewportHandler();
handlerManager.addHandler(h);
// the table handler
handlerManager = new DXFTableSectionHandler();
parser.addHandler(handlerManager);
handler = new DXFLayerTableHandler();
handlerManager.addHandler(handler);
handler = new DXFLineTypeTableHandler();
handlerManager.addHandler(handler);
handler = new DXFDimensionStyleTableHandler();
handlerManager.addHandler(handler);
handler = new DXFStyleTableHandler();
handlerManager.addHandler(handler);
handler = new DXFVPortTableHandler();
handlerManager.addHandler(handler);
handler = new DXFViewTableHandler();
handlerManager.addHandler(handler);
// the entity section handler
handlerManager = new DXFEntitiesSectionHandler();
parser.addHandler(handlerManager);
// the entity handlers
h = new DXFLineHandler();
handlerManager.addHandler(h);
h = new DXFCircleHandler();
handlerManager.addHandler(h);
h = new DXFArcHandler();
handlerManager.addHandler(h);
h = new DXFAttribHandler();
handlerManager.addHandler(h);
h = new DXFAttribDefinitionHandler();
handlerManager.addHandler(h);
h = new DXFPolylineHandler();
handlerManager.addHandler(h);
h = new DXFLWPolylineHandler();
handlerManager.addHandler(h);
h = new DXFMTextHandler();
handlerManager.addHandler(h);
h = new DXFTextHandler();
handlerManager.addHandler(h);
h = new DXFInsertHandler();
handlerManager.addHandler(h);
h = new DXFEllipseHandler();
handlerManager.addHandler(h);
h = new DXFSolidHandler();
handlerManager.addHandler(h);
h = new DXFTraceHandler();
handlerManager.addHandler(h);
h = new DXFDimensionHandler();
handlerManager.addHandler(h);
h = new DXFHatchHandler();
handlerManager.addHandler(h);
h = new DXFImageHandler();
handlerManager.addHandler(h);
h = new DXF3DFaceHandler();
handlerManager.addHandler(h);
h = new DXFRayHandler();
handlerManager.addHandler(h);
h = new DXFXLineHandler();
handlerManager.addHandler(h);
h = new DXFRegionHandler();
handlerManager.addHandler(h);
h = new DXFBodyHandler();
handlerManager.addHandler(h);
h = new DXF3DSolidHandler();
handlerManager.addHandler(h);
h = new DXFSplineHandler();
handlerManager.addHandler(h);
h = new DXFMLineHandler();
handlerManager.addHandler(h);
h = new DXFLeaderHandler();
handlerManager.addHandler(h);
h = new DXFToleranceHandler();
handlerManager.addHandler(h);
h = new DXFViewportHandler();
handlerManager.addHandler(h);
h = new DXFPointHandler();
handlerManager.addHandler(h);
// the OBJECTS section
handlerManager = new DXFObjectsSectionHandler();
h = new DXFImageDefHandler();
handlerManager.addHandler(h);
h = new DXFDictionaryHandler();
handlerManager.addHandler(h);
h = new DXFPlotsettingsHandler();
handlerManager.addHandler(h);
h = new DXFLayoutHandler();
handlerManager.addHandler(h);
h = new DXFMLineStyleHandler();
handlerManager.addHandler(h);
//add the HandlerManager as Handler to the parser
parser.addHandler(handlerManager);
return parser;
}
/**
* @see org.kabeja.dxf.parser.SAXParserBuilder the SAXParserBuilder for XML
* description
*
* @param file
* @return the DXFParser build from the XML description file
*/
public static Parser buildFromXML(String file) {
try {
return buildFromXML(new FileInputStream(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
public static Parser buildFromXML(InputStream in) {
return SAXParserBuilder.buildFromStream(in);
}
}