Search in sources :

Example 61 with ServerException

use of org.bimserver.shared.exceptions.ServerException in project BIMserver by opensourceBIM.

the class ServiceImpl method getSuggestedDeserializerForExtension.

@Override
public SDeserializerPluginConfiguration getSuggestedDeserializerForExtension(String extension, Long poid) throws ServerException, UserException {
    if (extension.startsWith(".")) {
        extension = extension.substring(1);
    }
    // Token authenticated users should also be able to call this method
    try {
        requireAuthenticationAndRunningServer();
        DatabaseSession session = getBimServer().getDatabase().createSession(OperationType.READ_ONLY);
        List<DeserializerPluginConfiguration> list = new ArrayList<>();
        try {
            Project project = session.get(poid, OldQuery.getDefault());
            UserSettings userSettings = getUserSettings(session);
            for (DeserializerPluginConfiguration deserializer : userSettings.getDeserializers()) {
                Plugin plugin = getBimServer().getPluginManager().getPlugin(deserializer.getPluginDescriptor().getIdentifier(), true);
                if (plugin instanceof DeserializerPlugin) {
                    DeserializerPlugin deserializerPlugin = (DeserializerPlugin) plugin;
                    if (deserializerPlugin.getSupportedSchemas().contains(Schema.valueOf(project.getSchema().toUpperCase()))) {
                        if (deserializerPlugin.canHandleExtension(extension)) {
                            list.add(deserializer);
                        }
                    }
                } else if (plugin instanceof StreamingDeserializerPlugin) {
                    StreamingDeserializerPlugin streamingDeserializerPlugin = (StreamingDeserializerPlugin) plugin;
                    if (streamingDeserializerPlugin.getSupportedSchemas().contains(Schema.valueOf(project.getSchema().toUpperCase()))) {
                        if (streamingDeserializerPlugin.canHandleExtension(extension)) {
                            list.add(deserializer);
                        }
                    }
                }
            }
        } finally {
            session.close();
        }
        if (list.size() == 1) {
            return getBimServer().getSConverter().convertToSObject(list.get(0));
        } else if (list.size() > 1) {
            for (DeserializerPluginConfiguration deserializerPluginConfiguration : list) {
                Plugin plugin = getBimServer().getPluginManager().getPlugin(deserializerPluginConfiguration.getPluginDescriptor().getIdentifier(), true);
                // Prefer the streaming version
                if (plugin instanceof StreamingDeserializerPlugin) {
                    return getBimServer().getSConverter().convertToSObject(deserializerPluginConfiguration);
                }
            }
            // Just return the first one
            return getBimServer().getSConverter().convertToSObject(list.get(0));
        }
    } catch (Exception e) {
        return handleException(e);
    }
    return null;
}
Also used : Project(org.bimserver.models.store.Project) SProject(org.bimserver.interfaces.objects.SProject) DatabaseSession(org.bimserver.database.DatabaseSession) UserSettings(org.bimserver.models.store.UserSettings) SUserSettings(org.bimserver.interfaces.objects.SUserSettings) StreamingDeserializerPlugin(org.bimserver.plugins.deserializers.StreamingDeserializerPlugin) ArrayList(java.util.ArrayList) StreamingDeserializerPlugin(org.bimserver.plugins.deserializers.StreamingDeserializerPlugin) DeserializerPlugin(org.bimserver.plugins.deserializers.DeserializerPlugin) SDeserializerPluginConfiguration(org.bimserver.interfaces.objects.SDeserializerPluginConfiguration) DeserializerPluginConfiguration(org.bimserver.models.store.DeserializerPluginConfiguration) ServiceException(org.bimserver.shared.exceptions.ServiceException) IOException(java.io.IOException) BimserverDatabaseException(org.bimserver.BimserverDatabaseException) SerializerException(org.bimserver.plugins.serializers.SerializerException) BcfException(org.opensourcebim.bcf.BcfException) UserException(org.bimserver.shared.exceptions.UserException) CannotBeScheduledException(org.bimserver.longaction.CannotBeScheduledException) DeserializeException(org.bimserver.plugins.deserializers.DeserializeException) ServerException(org.bimserver.shared.exceptions.ServerException) PluginException(org.bimserver.shared.exceptions.PluginException) MessagingException(javax.mail.MessagingException) AddressException(javax.mail.internet.AddressException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) MalformedURLException(java.net.MalformedURLException) FileAlreadyExistsException(java.nio.file.FileAlreadyExistsException) StreamingSerializerPlugin(org.bimserver.plugins.serializers.StreamingSerializerPlugin) QueryEnginePlugin(org.bimserver.plugins.queryengine.QueryEnginePlugin) MessagingSerializerPlugin(org.bimserver.plugins.serializers.MessagingSerializerPlugin) StreamingDeserializerPlugin(org.bimserver.plugins.deserializers.StreamingDeserializerPlugin) DeserializerPlugin(org.bimserver.plugins.deserializers.DeserializerPlugin) MessagingStreamingSerializerPlugin(org.bimserver.plugins.serializers.MessagingStreamingSerializerPlugin) SerializerPlugin(org.bimserver.plugins.serializers.SerializerPlugin) Plugin(org.bimserver.plugins.Plugin)

Example 62 with ServerException

use of org.bimserver.shared.exceptions.ServerException in project BIMserver by opensourceBIM.

the class BimServerClient method getGeometry.

@Override
public Geometry getGeometry(long roid, IdEObject ifcProduct) {
    try {
        SSerializerPluginConfiguration serializerByPluginClassName = getPluginInterface().getSerializerByPluginClassName("org.bimserver.serializers.binarygeometry.BinaryGeometrySerializerPlugin");
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        download(roid, serializerByPluginClassName.getOid(), outputStream);
        Files.write(Paths.get("bin.bin"), outputStream.toByteArray());
        ByteArrayInputStream bain = new ByteArrayInputStream(outputStream.toByteArray());
        return new Geometry(bain, ifcProduct.getOid());
    } catch (ServerException e) {
        e.printStackTrace();
    } catch (UserException e) {
        e.printStackTrace();
    } catch (PublicInterfaceNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (BimServerClientException e) {
        e.printStackTrace();
    }
    return null;
}
Also used : Geometry(org.bimserver.plugins.services.Geometry) ServerException(org.bimserver.shared.exceptions.ServerException) ByteArrayInputStream(java.io.ByteArrayInputStream) PublicInterfaceNotFoundException(org.bimserver.shared.exceptions.PublicInterfaceNotFoundException) SSerializerPluginConfiguration(org.bimserver.interfaces.objects.SSerializerPluginConfiguration) ByteArrayOutputStream(java.io.ByteArrayOutputStream) UserException(org.bimserver.shared.exceptions.UserException) IOException(java.io.IOException) BimServerClientException(org.bimserver.shared.exceptions.BimServerClientException)

Example 63 with ServerException

use of org.bimserver.shared.exceptions.ServerException in project BIMserver by opensourceBIM.

the class StreamingModel method processDownload.

private void processDownload(Long topicId) throws UserException, ServerException, PublicInterfaceNotFoundException, IfcModelInterfaceException, IOException {
    InputStream inputStream = bimServerClient.getDownloadData(topicId);
    if (inputStream == null) {
        throw new IfcModelInterfaceException("No InputStream to read from for topicId " + topicId);
    }
    InputStream downloadData = new org.bimserver.utils.CountingInputStream(inputStream) {
    };
    try {
        JsonFactory jsonFactory = new JsonFactory();
        JsonParser jp = jsonFactory.createParser(downloadData);
    // TODO implement
    } catch (Exception e) {
        throw new IfcModelInterfaceException(e);
    } finally {
        if (downloadData != null) {
            downloadData.close();
        }
    }
}
Also used : IfcModelInterfaceException(org.bimserver.emf.IfcModelInterfaceException) InputStream(java.io.InputStream) JsonFactory(com.fasterxml.jackson.core.JsonFactory) PublicInterfaceNotFoundException(org.bimserver.shared.exceptions.PublicInterfaceNotFoundException) IOException(java.io.IOException) DeserializeException(org.bimserver.plugins.deserializers.DeserializeException) IfcModelInterfaceException(org.bimserver.emf.IfcModelInterfaceException) UserException(org.bimserver.shared.exceptions.UserException) ServerException(org.bimserver.shared.exceptions.ServerException) JsonParser(com.fasterxml.jackson.core.JsonParser)

Example 64 with ServerException

use of org.bimserver.shared.exceptions.ServerException in project BIMserver by opensourceBIM.

the class WarServerInitializer method contextInitialized.

public void contextInitialized(ServletContextEvent servletContextEvent) {
    ServletContext servletContext = servletContextEvent.getServletContext();
    Path homeDir = null;
    if (servletContext.getAttribute("homedir") != null) {
        homeDir = Paths.get((String) servletContext.getAttribute("homedir"));
    }
    if (homeDir == null && servletContext.getInitParameter("homedir") != null) {
        homeDir = Paths.get(servletContext.getInitParameter("homedir"));
    }
    boolean autoMigrate = false;
    if (servletContext.getAttribute("autoMigrate") != null) {
        autoMigrate = (Boolean) servletContext.getAttribute("autoMigrate");
    }
    if (autoMigrate == false && servletContext.getInitParameter("autoMigrate") != null) {
        autoMigrate = Boolean.valueOf(servletContext.getInitParameter("autoMigrate"));
    }
    String realPath = servletContext.getRealPath("/");
    if (!realPath.endsWith("/")) {
        realPath = realPath + "/";
    }
    Path baseDir = Paths.get(realPath + "WEB-INF");
    if (homeDir == null) {
        homeDir = baseDir;
    }
    ResourceFetcher resourceFetcher = new WarResourceFetcher(servletContext, homeDir);
    BimServerConfig config = new BimServerConfig();
    config.setAutoMigrate(autoMigrate);
    config.setEnvironment(Environment.WAR);
    config.setHomeDir(homeDir);
    config.setResourceFetcher(resourceFetcher);
    if (homeDir != null) {
        // Basically doing this twice (also in BimServer.init), but this makes sure the logback.xml file is copied to the homedir
        try {
            BimServer.initHomeDir(config);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    setupLogging(homeDir);
    try {
        fixLogging(config);
    // TODO
    // config.setClassPath(makeClassPath(resourceFetcher.getFile("lib")));
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    config.setStartEmbeddedWebServer(false);
    bimServer = new BimServer(config);
    Jsr356Impl.setDefaultServletContext(servletContextEvent.getServletContext());
    Logger LOGGER = LoggerFactory.getLogger(WarServerInitializer.class);
    LOGGER.info("Servlet Context Name: " + servletContext.getServletContextName());
    try {
        bimServer.start();
    } catch (ServerException e) {
        LOGGER.error("", e);
    } catch (DatabaseInitException e) {
        LOGGER.error("", e);
    } catch (BimserverDatabaseException e) {
        LOGGER.error("", e);
    } catch (PluginException e) {
        LOGGER.error("", e);
    } catch (DatabaseRestartRequiredException e) {
        LOGGER.error("", e);
    }
    servletContext.setAttribute("bimserver", bimServer);
}
Also used : Path(java.nio.file.Path) ServerException(org.bimserver.shared.exceptions.ServerException) WarResourceFetcher(org.bimserver.resources.WarResourceFetcher) BimServer(org.bimserver.BimServer) PluginException(org.bimserver.shared.exceptions.PluginException) WarResourceFetcher(org.bimserver.resources.WarResourceFetcher) ResourceFetcher(org.bimserver.plugins.ResourceFetcher) IOException(java.io.IOException) BimServerConfig(org.bimserver.BimServerConfig) Logger(org.slf4j.Logger) DatabaseInitException(org.bimserver.database.berkeley.DatabaseInitException) BimserverDatabaseException(org.bimserver.BimserverDatabaseException) ServletContext(javax.servlet.ServletContext) DatabaseRestartRequiredException(org.bimserver.database.DatabaseRestartRequiredException)

Example 65 with ServerException

use of org.bimserver.shared.exceptions.ServerException in project BIMserver by opensourceBIM.

the class DownloadByNewQueryDatabaseAction method execute.

@Override
public ObjectProvider execute() throws UserException, BimserverLockConflictException, BimserverDatabaseException, ServerException {
    User user = getUserByUoid(authorization.getUoid());
    Project project = null;
    Map<Integer, Long> pidRoidMap = new HashMap<>();
    for (Long roid : roids) {
        Revision virtualRevision = getRevisionByRoid(roid);
        pidRoidMap.put(virtualRevision.getProject().getId(), virtualRevision.getOid());
        project = virtualRevision.getProject();
        try {
            authorization.canDownload(roid);
        } catch (UserException e) {
            if (!authorization.hasRightsOnProjectOrSuperProjectsOrSubProjects(user, project)) {
                throw new UserException("User has insufficient rights to download revisions from this project");
            }
            if (!authorization.hasRightsOnProjectOrSuperProjectsOrSubProjects(user, project)) {
                throw new UserException("User has insufficient rights to download revisions from this project");
            }
        }
    }
    PackageMetaData packageMetaData = bimServer.getMetaDataManager().getPackageMetaData(project.getSchema());
    try {
        return QueryObjectProvider.fromJsonString(getDatabaseSession(), bimServer, json, roids, packageMetaData);
    } catch (Exception e) {
        throw new UserException(e);
    }
}
Also used : Project(org.bimserver.models.store.Project) User(org.bimserver.models.store.User) Revision(org.bimserver.models.store.Revision) HashMap(java.util.HashMap) PackageMetaData(org.bimserver.emf.PackageMetaData) UserException(org.bimserver.shared.exceptions.UserException) BimserverLockConflictException(org.bimserver.database.BimserverLockConflictException) UserException(org.bimserver.shared.exceptions.UserException) ServerException(org.bimserver.shared.exceptions.ServerException) BimserverDatabaseException(org.bimserver.BimserverDatabaseException)

Aggregations

ServerException (org.bimserver.shared.exceptions.ServerException)281 UserException (org.bimserver.shared.exceptions.UserException)277 BimserverDatabaseException (org.bimserver.BimserverDatabaseException)242 IOException (java.io.IOException)234 DatabaseSession (org.bimserver.database.DatabaseSession)234 ServiceException (org.bimserver.shared.exceptions.ServiceException)127 SerializerException (org.bimserver.plugins.serializers.SerializerException)124 PluginException (org.bimserver.shared.exceptions.PluginException)124 DeserializeException (org.bimserver.plugins.deserializers.DeserializeException)122 MalformedURLException (java.net.MalformedURLException)120 BcfException (org.opensourcebim.bcf.BcfException)120 UnsupportedEncodingException (java.io.UnsupportedEncodingException)119 FileAlreadyExistsException (java.nio.file.FileAlreadyExistsException)119 MessagingException (javax.mail.MessagingException)119 AddressException (javax.mail.internet.AddressException)119 CannotBeScheduledException (org.bimserver.longaction.CannotBeScheduledException)119 ArrayList (java.util.ArrayList)30 SProject (org.bimserver.interfaces.objects.SProject)30 User (org.bimserver.models.store.User)27 PublicInterfaceNotFoundException (org.bimserver.shared.exceptions.PublicInterfaceNotFoundException)24