use of org.bimserver.interfaces.objects.SDeserializerPluginConfiguration in project BIMserver by opensourceBIM.
the class TestContainedInStructure method test.
@Test
public void test() {
try {
// Create a new BimServerClient with authentication
BimServerClientInterface bimServerClient = getFactory().create(new UsernamePasswordAuthenticationInfo("admin@bimserver.org", "admin"));
// Get the service interface
bimServerClient.getSettingsInterface().setGenerateGeometryOnCheckin(false);
// Create a new project
SProject newProject = bimServerClient.getServiceInterface().addProject("test" + Math.random(), "ifc2x3tc1");
// Get the appropriate deserializer
SDeserializerPluginConfiguration deserializer = bimServerClient.getServiceInterface().getSuggestedDeserializerForExtension("ifc", newProject.getOid());
// Checkin the file
bimServerClient.checkin(newProject.getOid(), "test", deserializer.getOid(), false, Flow.SYNC, new URL("https://github.com/opensourceBIM/TestFiles/raw/master/TestData/data/AC11-Institute-Var-2-IFC.ifc"));
// Refresh project info
newProject = bimServerClient.getServiceInterface().getProjectByPoid(newProject.getOid());
IfcModelInterface model = bimServerClient.getModel(newProject, newProject.getLastRevisionId(), true, false);
for (IfcFurnishingElement ifcFurnishingElement : model.getAllWithSubTypes(IfcFurnishingElement.class)) {
System.out.println(ifcFurnishingElement);
for (IfcRelContainedInSpatialStructure ifcRelContainedInSpatialStructure : ifcFurnishingElement.getContainedInStructure()) {
System.out.println(ifcRelContainedInSpatialStructure.getRelatingStructure());
}
}
} catch (Throwable e) {
e.printStackTrace();
if (e instanceof AssertionError) {
throw (AssertionError) e;
}
fail(e.getMessage());
}
}
use of org.bimserver.interfaces.objects.SDeserializerPluginConfiguration in project BIMserver by opensourceBIM.
the class ServiceImpl method triggerRevisionService.
@Override
public void triggerRevisionService(Long roid, Long soid) throws ServerException, UserException {
DatabaseSession session = getBimServer().getDatabase().createSession();
try {
Revision revision = (Revision) session.get(StorePackage.eINSTANCE.getRevision(), roid, OldQuery.getDefault());
if (revision == null) {
throw new UserException("No revision found for roid " + roid);
}
NewService newService = session.get(StorePackage.eINSTANCE.getNewService(), soid, OldQuery.getDefault());
if (revision.getServicesLinked().contains(newService)) {
// We don't want no loops
return;
}
String url = newService.getResourceUrl();
SerializerPluginConfiguration serializer = newService.getSerializer();
PackageMetaData pmd = getBimServer().getMetaDataManager().getPackageMetaData(revision.getProject().getSchema());
Query query = DefaultQueries.all(pmd);
Long topicId = download(Collections.singleton(roid), new JsonQueryObjectModelConverter(pmd).toJson(query).toString(), serializer.getOid(), false);
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
LongAction<?> longAction = getBimServer().getLongActionManager().getLongAction(topicId);
if (longAction == null) {
throw new UserException("No data found for topicId " + topicId);
}
SCheckoutResult result;
if (longAction instanceof LongStreamingDownloadAction) {
LongStreamingDownloadAction longStreamingDownloadAction = (LongStreamingDownloadAction) longAction;
if (longStreamingDownloadAction.getErrors().isEmpty()) {
try {
result = longStreamingDownloadAction.getCheckoutResult();
} catch (SerializerException e) {
throw new UserException(e);
}
} else {
LOGGER.error(longStreamingDownloadAction.getErrors().get(0));
throw new ServerException(longStreamingDownloadAction.getErrors().get(0));
}
} else {
LongDownloadOrCheckoutAction longDownloadAction = (LongDownloadOrCheckoutAction) longAction;
try {
longDownloadAction.waitForCompletion();
if (longDownloadAction.getErrors().isEmpty()) {
result = longDownloadAction.getCheckoutResult();
} else {
LOGGER.error(longDownloadAction.getErrors().get(0));
throw new ServerException(longDownloadAction.getErrors().get(0));
}
} catch (Exception e) {
LOGGER.error("", e);
throw new ServerException(e);
}
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
LOGGER.info("Starting serialization");
DataSource datasource = result.getFile().getDataSource();
if (datasource instanceof ExtendedDataSource) {
((ExtendedDataSource) datasource).writeToOutputStream(baos, null);
}
LOGGER.info("Serialization done");
if (newService.getAccessToken() != null) {
httpPost.setHeader("Authorization", "Bearer " + newService.getAccessToken());
}
httpPost.setHeader("Input-Type", newService.getInput());
httpPost.setHeader("Output-Type", newService.getOutput());
httpPost.setEntity(new ByteArrayEntity(baos.toByteArray()));
CloseableHttpResponse response = httpclient.execute(httpPost);
LOGGER.info(response.getStatusLine().toString());
if (response.getStatusLine().getStatusCode() == 401) {
throw new UserException("Remote service responded with a 401 Unauthorized");
} else if (response.getStatusLine().getStatusCode() == 200) {
Header[] headers = response.getHeaders("Content-Disposition");
String filename = "unknown";
if (headers.length > 0) {
String contentDisposition = headers[0].getValue();
if (contentDisposition.contains("filename=")) {
int indexOf = contentDisposition.indexOf("filename=") + 10;
filename = contentDisposition.substring(indexOf, contentDisposition.indexOf("\"", indexOf + 1));
} else {
filename = contentDisposition;
}
}
Header dataTitleHeader = response.getFirstHeader("Data-Title");
String dataTitle = newService.getName() + " Results";
if (dataTitleHeader != null) {
dataTitle = dataTitleHeader.getValue();
}
byte[] responseBytes = ByteStreams.toByteArray(response.getEntity().getContent());
Action action = newService.getAction();
if (action instanceof StoreExtendedData) {
SFile file = new SFile();
file.setData(responseBytes);
file.setFilename(filename);
file.setSize(responseBytes.length);
file.setMime(response.getHeaders("Content-Type")[0].getValue());
Long fileId = uploadFile(file);
SExtendedData extendedData = new SExtendedData();
extendedData.setAdded(new Date());
extendedData.setRevisionId(roid);
extendedData.setTitle(dataTitle);
extendedData.setSize(responseBytes.length);
extendedData.setFileId(fileId);
extendedData.setSchemaId(getExtendedDataSchemaByName(newService.getOutput()).getOid());
addExtendedDataToRevision(roid, extendedData);
} else if (action instanceof CheckinRevision) {
CheckinRevision checkinRevision = (CheckinRevision) action;
Project targetProject = checkinRevision.getProject();
String extension = filename.substring(filename.lastIndexOf(".") + 1);
SDeserializerPluginConfiguration deserializer = getSuggestedDeserializerForExtension(extension, targetProject.getOid());
Long checkingTopicId = initiateCheckin(targetProject.getOid(), deserializer.getOid());
checkinInitiatedInternal(checkingTopicId, targetProject.getOid(), dataTitle, deserializer.getOid(), (long) responseBytes.length, filename, new DataHandler(new ByteArrayDataSource(responseBytes, "ifc")), false, true, newService.getOid());
}
} else {
throw new UserException("Remote service responded with a " + response.getStatusLine());
}
} catch (Exception e) {
handleException(e);
} finally {
session.close();
}
}
use of org.bimserver.interfaces.objects.SDeserializerPluginConfiguration in project BIMserver by opensourceBIM.
the class TestAddExtendedData method start.
private void start() {
try {
BimServerClientInterface client = LocalDevSetup.setupJson("http://localhost:8080");
SFile file = new SFile();
file.setData("test".getBytes(Charsets.UTF_8));
file.setMime("text");
file.setFilename("test.txt");
long fileId = client.getServiceInterface().uploadFile(file);
System.out.println(client.getServiceInterface().getFile(fileId));
SProject project = client.getServiceInterface().addProject("test23", "ifc2x3tc1");
SDeserializerPluginConfiguration deserializerForExtension = client.getServiceInterface().getSuggestedDeserializerForExtension("ifc", project.getOid());
client.checkin(project.getOid(), "initial", deserializerForExtension.getOid(), false, Flow.SYNC, Paths.get("../TestData/data/AC11-FZK-Haus-IFC.ifc"));
project = client.getServiceInterface().getProjectByPoid(project.getOid());
SExtendedDataSchema extendedDataSchemaByNamespace = client.getServiceInterface().getExtendedDataSchemaByName("http://extend.bimserver.org/validationreport");
SExtendedData extendedData = new SExtendedData();
extendedData.setFileId(fileId);
extendedData.setTitle("test3");
extendedData.setSchemaId(extendedDataSchemaByNamespace.getOid());
client.getServiceInterface().addExtendedDataToRevision(project.getLastRevisionId(), extendedData);
} catch (ServiceException e) {
e.printStackTrace();
} catch (PublicInterfaceNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
use of org.bimserver.interfaces.objects.SDeserializerPluginConfiguration in project BIMserver by opensourceBIM.
the class TestBigFilesRemote method start.
private void start(String[] args) {
String address = args[0];
String username = args[1];
String password = args[2];
String basepath = args[3];
System.out.println("Address: " + address);
System.out.println("Username: " + username);
System.out.println("Password: " + password);
System.out.println("Basepath: " + basepath);
try (JsonBimServerClientFactory factory = new JsonBimServerClientFactory(null, address)) {
BimServerClient client = factory.create(new UsernamePasswordAuthenticationInfo(args[1], args[2]));
String[] fileNames = new String[] { "4NC Whole Model.ifc", "1006 General withIFC_exportLayerCombos.ifc", "12001_17 MOS_AC17SpecialBigVersion.ifc", "12510_MASTER_Drofus_Test.ifc", "BondBryan10-134 (06) Proposed Site-1.ifc", "HLM_39090_12259 University of Sheffield NEB [PR-BIM-01-bhelberg].ifc" };
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
for (String fileName : fileNames) {
String projectName = fileName.substring(0, fileName.lastIndexOf(".ifc"));
List<SProject> projectsByName = client.getServiceInterface().getProjectsByName(projectName);
SProject project = null;
if (projectsByName.size() == 1) {
project = projectsByName.get(0);
} else {
System.out.println("Creating project " + fileName);
project = client.getServiceInterface().addProject(projectName, "ifc2x3tc1");
}
SDeserializerPluginConfiguration deserializer = client.getServiceInterface().getSuggestedDeserializerForExtension("ifc", project.getOid());
System.out.println(dateFormat.format(new Date()));
SDatabaseInformation databaseInformation = client.getAdminInterface().getDatabaseInformation();
System.out.println("Database size: " + Formatters.bytesToString(databaseInformation.getDatabaseSizeInBytes()) + " (" + databaseInformation.getDatabaseSizeInBytes() + ")");
SJavaInfo javaInfo = client.getAdminInterface().getJavaInfo();
System.out.println("Used: " + Formatters.bytesToString(javaInfo.getHeapUsed()) + ", Free: " + Formatters.bytesToString(javaInfo.getHeapFree()) + ", Max: " + Formatters.bytesToString(javaInfo.getHeapMax()) + ", Total: " + Formatters.bytesToString(javaInfo.getHeapTotal()));
String downloadUrl = basepath + UrlEscapers.urlPathSegmentEscaper().escape(fileName);
System.out.println("Download URL: " + downloadUrl);
client.getServiceInterface().checkinFromUrl(project.getOid(), fileName, deserializer.getOid(), fileName, downloadUrl, false, true);
System.out.println("Done checking in " + fileName);
}
} catch (ServiceException e) {
e.printStackTrace();
} catch (ChannelConnectionException e) {
e.printStackTrace();
} catch (PublicInterfaceNotFoundException e) {
e.printStackTrace();
} catch (BimServerClientException e) {
e.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
}
use of org.bimserver.interfaces.objects.SDeserializerPluginConfiguration in project BIMserver by opensourceBIM.
the class TestMultiple method main.
public static void main(String[] args) throws InterruptedException {
try (BimServerClientFactory factory = new JsonBimServerClientFactory("http://localhost:8080")) {
BimServerClientInterface client = factory.create(new UsernamePasswordAuthenticationInfo("admin@bimserver.org", "admin"));
ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 2, 1, TimeUnit.DAYS, new ArrayBlockingQueue<>(2));
for (int i = 0; i < 2; i++) {
executor.submit(new Runnable() {
@Override
public void run() {
try {
SProject project = client.getServiceInterface().addProject("P" + new Random().nextInt(), "ifc2x3tc1");
SDeserializerPluginConfiguration deserializer = client.getServiceInterface().getSuggestedDeserializerForExtension("ifc", project.getOid());
client.checkin(project.getOid(), "Test", deserializer.getOid(), false, Flow.ASYNC, Paths.get("C:\\Git\\TestFiles\\TestData\\data\\HITOS_070308.ifc"));
} catch (ServerException e) {
e.printStackTrace();
} catch (UserException e) {
e.printStackTrace();
} catch (PublicInterfaceNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
} catch (BimServerClientException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
} catch (ChannelConnectionException e) {
e.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
}
Aggregations