Search in sources :

Example 1 with ServiceDescriptor

use of org.bimserver.models.store.ServiceDescriptor in project BIMserver by opensourceBIM.

the class AbstractService method register.

@Override
public void register(long uoid, SInternalServicePluginConfiguration internalService, final PluginConfiguration pluginConfiguration) {
    name = internalService.getName();
    ServiceDescriptor serviceDescriptor = StoreFactory.eINSTANCE.createServiceDescriptor();
    serviceDescriptor.setProviderName("BIMserver");
    serviceDescriptor.setIdentifier("" + internalService.getOid());
    serviceDescriptor.setName(internalService.getName());
    serviceDescriptor.setDescription(internalService.getDescription());
    serviceDescriptor.setNotificationProtocol(AccessMethod.INTERNAL);
    serviceDescriptor.setTrigger(Trigger.NEW_REVISION);
    addRequiredRights(serviceDescriptor);
    serviceDescriptor.setReadRevision(true);
    registerNewRevisionHandler(uoid, serviceDescriptor, new NewRevisionHandler() {

        @Override
        public void newRevision(BimServerClientInterface bimServerClientInterface, long poid, long roid, String userToken, long soid, SObjectType settings) throws ServerException, UserException {
            try {
                Long topicId = bimServerClientInterface.getRegistry().registerProgressOnRevisionTopic(SProgressTopicType.RUNNING_SERVICE, poid, roid, "Running " + name);
                RunningService runningService = new RunningService(topicId, bimServerClientInterface, pluginConfiguration);
                try {
                    SLongActionState state = new SLongActionState();
                    state.setProgress(getProgressType() == ProgressType.KNOWN ? 0 : -1);
                    state.setTitle(name);
                    state.setState(SActionState.STARTED);
                    state.setStart(runningService.getStartDate());
                    bimServerClientInterface.getRegistry().updateProgressTopic(topicId, state);
                    AbstractService.this.newRevision(runningService, bimServerClientInterface, poid, roid, userToken, soid, settings);
                    state = new SLongActionState();
                    state.setProgress(100);
                    state.setTitle(name);
                    state.setState(SActionState.FINISHED);
                    state.setStart(runningService.getStartDate());
                    state.setEnd(new Date());
                    bimServerClientInterface.getRegistry().updateProgressTopic(topicId, state);
                } catch (BimServerClientException e) {
                    LOGGER.error("", e);
                } catch (Exception e) {
                    LOGGER.error("", e);
                } finally {
                    bimServerClientInterface.getRegistry().unregisterProgressTopic(topicId);
                }
            } catch (PublicInterfaceNotFoundException e) {
                LOGGER.error("", e);
            }
        }
    });
}
Also used : SObjectType(org.bimserver.interfaces.objects.SObjectType) ServerException(org.bimserver.shared.exceptions.ServerException) SLongActionState(org.bimserver.interfaces.objects.SLongActionState) BimServerClientException(org.bimserver.shared.exceptions.BimServerClientException) Date(java.util.Date) PluginException(org.bimserver.shared.exceptions.PluginException) PublicInterfaceNotFoundException(org.bimserver.shared.exceptions.PublicInterfaceNotFoundException) BimServerClientException(org.bimserver.shared.exceptions.BimServerClientException) UserException(org.bimserver.shared.exceptions.UserException) ServerException(org.bimserver.shared.exceptions.ServerException) ServiceDescriptor(org.bimserver.models.store.ServiceDescriptor) PublicInterfaceNotFoundException(org.bimserver.shared.exceptions.PublicInterfaceNotFoundException) UserException(org.bimserver.shared.exceptions.UserException)

Aggregations

Date (java.util.Date)1 SLongActionState (org.bimserver.interfaces.objects.SLongActionState)1 SObjectType (org.bimserver.interfaces.objects.SObjectType)1 ServiceDescriptor (org.bimserver.models.store.ServiceDescriptor)1 BimServerClientException (org.bimserver.shared.exceptions.BimServerClientException)1 PluginException (org.bimserver.shared.exceptions.PluginException)1 PublicInterfaceNotFoundException (org.bimserver.shared.exceptions.PublicInterfaceNotFoundException)1 ServerException (org.bimserver.shared.exceptions.ServerException)1 UserException (org.bimserver.shared.exceptions.UserException)1