use of org.bimserver.plugins.serializers.SerializerException in project BIMserver by opensourceBIM.
the class LongDownloadOrCheckoutAction method executeAction.
protected void executeAction(BimDatabaseAction<? extends IfcModelInterface> action, DownloadParameters downloadParameters, DatabaseSession session, boolean commit) throws BimserverDatabaseException, UserException, NoSerializerFoundException, ServerException {
try {
if (action == null) {
checkoutResult = new SCheckoutResult();
checkoutResult.setFile(new CachingDataHandler(getBimServer().getDiskCacheManager(), downloadParameters));
checkoutResult.setSerializerOid(downloadParameters.getSerializerOid());
} else {
Revision revision = session.get(StorePackage.eINSTANCE.getRevision(), downloadParameters.getRoid(), OldQuery.getDefault());
if (revision == null) {
throw new UserException("Revision with roid " + downloadParameters.getRoid() + " not found");
}
// Little hack to make
revision.getProject().getGeoTag().load();
// sure this is
// lazily loaded,
// because after the
// executeAndCommitAction
// the session won't
// be usable
IfcModelInterface ifcModel = session.executeAndCommitAction(action);
// Session is closed after this
DatabaseSession newSession = getBimServer().getDatabase().createSession(OperationType.READ_ONLY);
RenderEnginePlugin renderEnginePlugin = null;
try {
PluginConfiguration serializerPluginConfiguration = newSession.get(StorePackage.eINSTANCE.getPluginConfiguration(), downloadParameters.getSerializerOid(), OldQuery.getDefault());
if (serializerPluginConfiguration != null) {
if (serializerPluginConfiguration instanceof MessagingSerializerPluginConfiguration) {
try {
messagingSerializer = getBimServer().getSerializerFactory().createMessagingSerializer(getUserName(), ifcModel, downloadParameters);
} catch (SerializerException e) {
e.printStackTrace();
}
} else if (serializerPluginConfiguration instanceof SerializerPluginConfiguration) {
RenderEnginePluginConfiguration renderEngine = ((SerializerPluginConfiguration) serializerPluginConfiguration).getRenderEngine();
if (renderEngine != null) {
renderEnginePlugin = getBimServer().getPluginManager().getRenderEnginePlugin(renderEngine.getPluginDescriptor().getPluginClassName(), true);
}
checkoutResult = convertModelToCheckoutResult(revision.getProject(), getUserName(), ifcModel, renderEnginePlugin, downloadParameters);
}
}
} catch (BimserverDatabaseException e) {
LOGGER.error("", e);
} finally {
newSession.close();
}
}
} finally {
done();
}
}
use of org.bimserver.plugins.serializers.SerializerException in project BIMserver by opensourceBIM.
the class LongDownloadOrCheckoutAction method convertModelToCheckoutResult.
protected SCheckoutResult convertModelToCheckoutResult(Project project, String username, IfcModelInterface model, RenderEnginePlugin renderEnginePlugin, DownloadParameters downloadParameters) throws UserException, NoSerializerFoundException {
SCheckoutResult checkoutResult = new SCheckoutResult();
checkoutResult.setSerializerOid(downloadParameters.getSerializerOid());
if (model.isValid()) {
checkoutResult.setProjectName(project.getName());
checkoutResult.setRevisionNr(model.getModelMetaData().getRevisionId());
try {
Serializer serializer = getBimServer().getSerializerFactory().create(project, username, model, renderEnginePlugin, downloadParameters);
if (serializer == null) {
throw new UserException("Error, no serializer found " + downloadParameters.getSerializerOid());
}
if (getBimServer().getServerSettingsCache().getServerSettings().getCacheOutputFiles() && serializer.allowCaching()) {
if (getBimServer().getDiskCacheManager().contains(downloadParameters)) {
checkoutResult.setFile(new CachingDataHandler(getBimServer().getDiskCacheManager(), downloadParameters));
} else {
checkoutResult.setFile(new DataHandler(new CacheStoringEmfSerializerDataSource(serializer, model.getModelMetaData().getName(), getBimServer().getDiskCacheManager().startCaching(downloadParameters))));
}
} else {
checkoutResult.setFile(new DataHandler(new EmfSerializerDataSource(serializer, model.getModelMetaData().getName())));
}
} catch (SerializerException e) {
LOGGER.error("", e);
}
}
return checkoutResult;
}
use of org.bimserver.plugins.serializers.SerializerException in project BIMserver by opensourceBIM.
the class MessagingSerializerInputstream method read.
@Override
public int read(byte[] b, int off, int len) throws IOException {
try {
int read = 0;
if (buffer != null && pos < buffer.length) {
int nrToCopy = Math.min(buffer.length - pos, len);
System.arraycopy(buffer, pos, b, off, nrToCopy);
pos += nrToCopy;
read += nrToCopy;
}
while (read < len) {
out.reset();
buffer = null;
pos = 0;
boolean write = messagingStreamingSerializer.writeMessage(out, null);
if (write) {
buffer = out.toByteArray();
if (buffer.length > 0) {
int nrToCopy = Math.min(buffer.length, len - read);
System.arraycopy(buffer, pos, b, off + read, nrToCopy);
pos += nrToCopy;
read += nrToCopy;
}
} else {
if (read != 0) {
return read;
} else {
return -1;
}
}
}
return read;
} catch (SerializerException e) {
throw new IOException(e);
}
}
use of org.bimserver.plugins.serializers.SerializerException in project BIMserver by opensourceBIM.
the class Visualise method main.
public static void main(String[] args) {
PluginManager pluginManager;
try {
pluginManager = LocalDevPluginLoader.createPluginManager(Paths.get("home"));
DeserializerPlugin deserializerPlugin = pluginManager.requireDeserializer("application/ifc");
Deserializer deserializer = deserializerPlugin.createDeserializer(new PluginConfiguration());
deserializer.init(pluginManager.getMetaDataManager().getPackageMetaData("ifc2x3tc1"));
IfcModelInterface model1 = DeserializerUtils.readFromFile(deserializer, TestFile.EXPORT3.getFile());
IfcModelInterface model1b = DeserializerUtils.readFromFile(deserializer, TestFile.EXPORT3.getFile());
IfcModelInterface model2 = DeserializerUtils.readFromFile(deserializer, TestFile.EXPORT3.getFile());
IfcModelInterface model2b = DeserializerUtils.readFromFile(deserializer, TestFile.EXPORT3.getFile());
model1.setObjectOids();
model1b.setObjectOids();
model2.setObjectOids();
model2b.setObjectOids();
model1.indexGuids();
model2.indexGuids();
model2.fixOids(new IncrementingOidProvider(model1.getHighestOid() + 1));
IfcModel merged = new RevisionMerger(model1, model2).merge();
SerializerPlugin serializerPlugin = pluginManager.getSerializerPlugin("org.bimserver.ifc.step.serializer.IfcStepSerializerPlugin", true);
Serializer serializer = serializerPlugin.createSerializer(new PluginConfiguration());
serializer.init(merged, null, false);
SerializerUtils.writeToFile(serializer, Paths.get("merged.ifc"));
new Visualise().start(model1b, "Model 1");
new Visualise().start(model2b, "Model 2");
new Visualise().start(merged, "Merged");
} catch (PluginException e1) {
e1.printStackTrace();
} catch (SerializerException e) {
e.printStackTrace();
} catch (DeserializeException e) {
e.printStackTrace();
} catch (IfcModelInterfaceException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
use of org.bimserver.plugins.serializers.SerializerException in project BIMserver by opensourceBIM.
the class AddFurniture method main.
public static void main(String[] args) {
try {
PluginManager pluginManager = LocalDevPluginLoader.createPluginManager(Paths.get("home"));
DeserializerPlugin deserializerPlugin = pluginManager.getFirstDeserializer("ifc", Schema.IFC2X3TC1, true);
Deserializer deserializer = deserializerPlugin.createDeserializer(null);
deserializer.init(pluginManager.getMetaDataManager().getPackageMetaData("ifc2x3tc1"));
IfcModelInterface model = DeserializerUtils.readFromFile(deserializer, Paths.get("../TestData/data/AC9R1-Haus-G-H-Ver2-2x3.ifc"));
deserializer = deserializerPlugin.createDeserializer(null);
deserializer.init(pluginManager.getMetaDataManager().getPackageMetaData("ifc2x3tc1"));
IfcModelInterface furnishingModel = DeserializerUtils.readFromFile(deserializer, Paths.get("test.ifc"));
model.fixOids(new IncrementingOidProvider());
long oid = model.getHighestOid();
IncrementingOidProvider oidProvider = new IncrementingOidProvider(oid + 1);
IfcFurnishingElement picknick = (IfcFurnishingElement) furnishingModel.getByName(Ifc2x3tc1Package.eINSTANCE.getIfcFurnishingElement(), "Picknik Bank");
ModelHelper modelHelper = new ModelHelper(pluginManager.getMetaDataManager(), model);
IfcProductDefinitionShape representation = (IfcProductDefinitionShape) picknick.getRepresentation();
IfcRepresentation surfaceModel = null;
IfcRepresentation boundingBox = null;
for (IfcRepresentation ifcRepresentation : representation.getRepresentations()) {
IfcShapeRepresentation ifcShapeRepresentation = (IfcShapeRepresentation) ifcRepresentation;
if (ifcShapeRepresentation.getRepresentationType().equals("SurfaceModel")) {
surfaceModel = (IfcRepresentation) modelHelper.copy(ifcShapeRepresentation, false);
} else if (ifcShapeRepresentation.getRepresentationType().equals("BoundingBox")) {
boundingBox = (IfcRepresentation) modelHelper.copy(ifcShapeRepresentation, false);
}
}
IfcOwnerHistory ownerHistory = null;
List<IfcOwnerHistory> all = model.getAll(IfcOwnerHistory.class);
if (all.size() > 0) {
ownerHistory = all.get(0);
}
for (IfcBuildingStorey ifcBuildingStorey : model.getAll(IfcBuildingStorey.class)) {
for (IfcRelDecomposes ifcRelDecomposes : ifcBuildingStorey.getIsDecomposedBy()) {
for (IfcObjectDefinition ifcObjectDefinition : ifcRelDecomposes.getRelatedObjects()) {
if (ifcObjectDefinition instanceof IfcSpace) {
IfcSpace ifcSpace = (IfcSpace) ifcObjectDefinition;
// IfcProductDefinitionShape slabRepr = (IfcProductDefinitionShape) ifcSpace.getRepresentation();
// IfcBoundingBox box = null;
// for (IfcRepresentation representation2 : slabRepr.getRepresentations()) {
// IfcShapeRepresentation shapeRepresentation = (IfcShapeRepresentation)representation2;
// if (shapeRepresentation.getRepresentationType().equals("BoundingBox")) {
// for (IfcRepresentationItem i2 : shapeRepresentation.getItems()) {
// box = (IfcBoundingBox)i2;
// }
// }
// }
IfcFurnishingElement newFurnishing = model.create(IfcFurnishingElement.class, oidProvider);
IfcRelContainedInSpatialStructure containedInSpatialStructure2 = model.create(IfcRelContainedInSpatialStructure.class, oidProvider);
containedInSpatialStructure2.setRelatingStructure(ifcBuildingStorey);
containedInSpatialStructure2.getRelatedElements().add(newFurnishing);
newFurnishing.setName("Generated");
newFurnishing.setGlobalId("TEST");
newFurnishing.setOwnerHistory(ownerHistory);
IfcProductDefinitionShape definitionShape = model.create(IfcProductDefinitionShape.class, oidProvider);
newFurnishing.setRepresentation(definitionShape);
definitionShape.getRepresentations().add(boundingBox);
definitionShape.getRepresentations().add(surfaceModel);
IfcLocalPlacement localPlacement = model.create(IfcLocalPlacement.class, oidProvider);
localPlacement.setPlacementRelTo(ifcSpace.getObjectPlacement());
IfcAxis2Placement3D axis2Placement3D = model.create(IfcAxis2Placement3D.class, oidProvider);
localPlacement.setRelativePlacement(axis2Placement3D);
IfcCartesianPoint pos = model.create(IfcCartesianPoint.class, oidProvider);
pos.getCoordinates().add(-3d);
pos.getCoordinates().add(+0.5d);
pos.getCoordinates().add(0d);
axis2Placement3D.setLocation(pos);
newFurnishing.setObjectPlacement(localPlacement);
}
}
}
}
model.resetExpressIds();
SerializerPlugin serializerPlugin = pluginManager.getSerializerPlugin("org.bimserver.ifc.step.serializer.IfcStepSerializerPlugin", true);
Serializer serializer = serializerPlugin.createSerializer(null);
serializer.init(model, null, true);
SerializerUtils.writeToFile(serializer, Paths.get("withfurn.ifc"));
} catch (PluginException e) {
e.printStackTrace();
} catch (DeserializeException e) {
e.printStackTrace();
} catch (IfcModelInterfaceException e) {
e.printStackTrace();
} catch (SerializerException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Aggregations