Search in sources :

Example 6 with SUser

use of org.bimserver.interfaces.objects.SUser in project BIMserver by opensourceBIM.

the class ServiceImpl method sendCompareEmail.

@Override
public void sendCompareEmail(SCompareType sCompareType, Long mcid, Long poid, Long roid1, Long roid2, String address) throws ServerException, UserException {
    requireRealUserAuthentication();
    DatabaseSession session = getBimServer().getDatabase().createSession();
    try {
        SUser currentUser = getCurrentUser(session);
        Revision revision1 = session.get(StorePackage.eINSTANCE.getRevision(), roid1, OldQuery.getDefault());
        Revision revision2 = session.get(StorePackage.eINSTANCE.getRevision(), roid2, OldQuery.getDefault());
        String senderName = currentUser.getName();
        String senderAddress = currentUser.getUsername();
        if (!senderAddress.contains("@") || !senderAddress.contains(".")) {
            senderAddress = getBimServer().getServerSettingsCache().getServerSettings().getEmailSenderAddress();
        }
        EmailMessage message = getBimServer().getMailSystem().createMessage();
        try {
            InternetAddress addressFrom = new InternetAddress(senderAddress);
            addressFrom.setPersonal(senderName);
            message.setFrom(addressFrom);
            InternetAddress[] addressTo = new InternetAddress[1];
            addressTo[0] = new InternetAddress(address);
            message.setRecipients(Message.RecipientType.TO, addressTo);
            message.setSubject("BIMserver Model Comparator");
            SCompareResult compareResult = compare(roid1, roid2, sCompareType, mcid);
            String html = CompareWriter.writeCompareResult(compareResult, revision1.getId(), revision2.getId(), sCompareType, getServiceMap().getServiceInterface().getProjectByPoid(poid), false);
            message.setContent(html, "text/html");
            message.send();
        } catch (AddressException e) {
            throw new UserException(e);
        } catch (UnsupportedEncodingException e) {
            throw new UserException(e);
        } catch (MessagingException e) {
            throw new UserException(e);
        }
    } catch (Exception e) {
        handleException(e);
    } finally {
        session.close();
    }
}
Also used : EmailMessage(org.bimserver.mail.EmailMessage) InternetAddress(javax.mail.internet.InternetAddress) DatabaseSession(org.bimserver.database.DatabaseSession) MessagingException(javax.mail.MessagingException) SUser(org.bimserver.interfaces.objects.SUser) UnsupportedEncodingException(java.io.UnsupportedEncodingException) 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) MessagingException(javax.mail.MessagingException) AddressException(javax.mail.internet.AddressException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) MalformedURLException(java.net.MalformedURLException) SRevision(org.bimserver.interfaces.objects.SRevision) Revision(org.bimserver.models.store.Revision) CheckinRevision(org.bimserver.models.store.CheckinRevision) SExtendedDataAddedToRevision(org.bimserver.interfaces.objects.SExtendedDataAddedToRevision) AddressException(javax.mail.internet.AddressException) SCompareResult(org.bimserver.interfaces.objects.SCompareResult) UserException(org.bimserver.shared.exceptions.UserException)

Example 7 with SUser

use of org.bimserver.interfaces.objects.SUser in project BIMserver by opensourceBIM.

the class SyndicationServlet method writeRevisionsFeed.

private void writeRevisionsFeed(HttpServletRequest request, HttpServletResponse response, ServiceMap serviceMap) throws IOException, FeedException, ServiceException, PublicInterfaceNotFoundException {
    long poid = Long.parseLong(request.getParameter("poid"));
    SProject sProject = serviceMap.getServiceInterface().getProjectByPoid(poid);
    SyndFeed feed = new SyndFeedImpl();
    feed.setFeedType(FEED_TYPE);
    feed.setTitle("BIMserver.org revisions feed for project '" + sProject.getName() + "'");
    feed.setLink(request.getContextPath());
    feed.setDescription("This feed represents all the revisions of project '" + sProject.getName() + "'");
    List<SyndEntry> entries = new ArrayList<SyndEntry>();
    try {
        List<SRevision> allRevisionsOfProject = serviceMap.getServiceInterface().getAllRevisionsOfProject(poid);
        Collections.sort(allRevisionsOfProject, new SRevisionIdComparator(false));
        for (SRevision sVirtualRevision : allRevisionsOfProject) {
            SUser user = serviceMap.getServiceInterface().getUserByUoid(sVirtualRevision.getUserId());
            SyndEntry entry = new SyndEntryImpl();
            entry.setTitle("Revision " + sVirtualRevision.getOid());
            entry.setLink(request.getContextPath() + "/revision.jsp?poid=" + sVirtualRevision.getOid() + "&roid=" + sVirtualRevision.getOid());
            entry.setPublishedDate(sVirtualRevision.getDate());
            SyndContent description = new SyndContentImpl();
            description.setType("text/html");
            description.setValue("<table><tr><td>User</td><td>" + user.getUsername() + "</td></tr><tr><td>Comment</td><td>" + sVirtualRevision.getComment() + "</td></tr></table>");
            entry.setDescription(description);
            entries.add(entry);
        }
    } catch (ServiceException e) {
        LOGGER.error("", e);
    }
    feed.setEntries(entries);
    SyndFeedOutput output = new SyndFeedOutput();
    output.output(feed, response.getWriter());
}
Also used : SyndEntry(com.rometools.rome.feed.synd.SyndEntry) SyndContentImpl(com.rometools.rome.feed.synd.SyndContentImpl) SUser(org.bimserver.interfaces.objects.SUser) ArrayList(java.util.ArrayList) SyndFeedOutput(com.rometools.rome.io.SyndFeedOutput) SProject(org.bimserver.interfaces.objects.SProject) SyndFeed(com.rometools.rome.feed.synd.SyndFeed) SRevision(org.bimserver.interfaces.objects.SRevision) SyndContent(com.rometools.rome.feed.synd.SyndContent) ServiceException(org.bimserver.shared.exceptions.ServiceException) SyndEntryImpl(com.rometools.rome.feed.synd.SyndEntryImpl) SyndFeedImpl(com.rometools.rome.feed.synd.SyndFeedImpl) SRevisionIdComparator(org.bimserver.shared.comparators.SRevisionIdComparator)

Example 8 with SUser

use of org.bimserver.interfaces.objects.SUser in project BIMserver by opensourceBIM.

the class ServiceImpl method regenerateGeometry.

@Override
public Long regenerateGeometry(Long roid, Long eoid) throws ServerException, UserException {
    DatabaseSession session = getBimServer().getDatabase().createSession();
    try {
        Revision revision = session.get(roid, OldQuery.getDefault());
        SUser user = getCurrentUser();
        ProgressOnProjectTopic progressTopic = getBimServer().getNotificationsManager().createProgressOnProjectTopic(getAuthorization().getUoid(), revision.getProject().getOid(), SProgressTopicType.UPLOAD, "Regenerate geometry");
        RegenerateGeometryDatabaseAction action = new RegenerateGeometryDatabaseAction(getBimServer(), session, getInternalAccessMethod(), revision.getProject().getOid(), roid, getCurrentUser().getOid(), eoid);
        LongGenericAction longAction = new LongGenericAction(progressTopic.getKey().getId(), getBimServer(), user.getUsername(), user.getName(), getAuthorization(), action);
        getBimServer().getLongActionManager().start(longAction);
        return progressTopic.getKey().getId();
    } catch (Exception e) {
        return handleException(e);
    } finally {
        session.close();
    }
}
Also used : RegenerateGeometryDatabaseAction(org.bimserver.database.actions.RegenerateGeometryDatabaseAction) ProgressOnProjectTopic(org.bimserver.notifications.ProgressOnProjectTopic) SRevision(org.bimserver.interfaces.objects.SRevision) Revision(org.bimserver.models.store.Revision) CheckinRevision(org.bimserver.models.store.CheckinRevision) SExtendedDataAddedToRevision(org.bimserver.interfaces.objects.SExtendedDataAddedToRevision) DatabaseSession(org.bimserver.database.DatabaseSession) SUser(org.bimserver.interfaces.objects.SUser) 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) MessagingException(javax.mail.MessagingException) AddressException(javax.mail.internet.AddressException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) MalformedURLException(java.net.MalformedURLException) LongGenericAction(org.bimserver.longaction.LongGenericAction)

Example 9 with SUser

use of org.bimserver.interfaces.objects.SUser in project BIMserver by opensourceBIM.

the class ServiceImpl method getUserByUserName.

@Override
public SUser getUserByUserName(String username) throws ServerException, UserException {
    requireRealUserAuthentication();
    DatabaseSession session = getBimServer().getDatabase().createSession();
    try {
        BimDatabaseAction<User> action = new GetUserByUserNameDatabaseAction(session, getInternalAccessMethod(), username);
        SUser convert = getBimServer().getSConverter().convertToSObject(session.executeAndCommitAction(action));
        if (convert == null) {
            throw new UserException("User with username \"" + username + "\" not found");
        }
        return convert;
    } catch (Exception e) {
        return handleException(e);
    } finally {
        session.close();
    }
}
Also used : SUser(org.bimserver.interfaces.objects.SUser) User(org.bimserver.models.store.User) DatabaseSession(org.bimserver.database.DatabaseSession) SUser(org.bimserver.interfaces.objects.SUser) UserException(org.bimserver.shared.exceptions.UserException) GetUserByUserNameDatabaseAction(org.bimserver.database.actions.GetUserByUserNameDatabaseAction) 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) MessagingException(javax.mail.MessagingException) AddressException(javax.mail.internet.AddressException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) MalformedURLException(java.net.MalformedURLException)

Example 10 with SUser

use of org.bimserver.interfaces.objects.SUser in project BIMserver by opensourceBIM.

the class TestManyUsersAndLogin method start.

private void start() {
    try {
        BimServerClientInterface client = LocalDevSetup.setupJson("http://localhost:8080");
        int nrUsers = 10000;
        long totalTimeAdding = 0;
        List<Long> userIds = new ArrayList<>();
        for (int i = 0; i < nrUsers; i++) {
            long s = System.nanoTime();
            try {
                SUser user = client.getServiceInterface().addUserWithPassword("test" + i + "@bimserver.org", "password", "Test " + i, SUserType.USER, true, "");
                userIds.add(user.getOid());
            } catch (Exception e) {
            }
            long e = System.nanoTime();
            totalTimeAdding += (e - s);
            if (i % 100 == 0) {
                System.out.println((totalTimeAdding / 1000000) + " ms for 100 users");
                totalTimeAdding = 0;
            }
        }
        long totalLoginTime = 0;
        int nrProjects = 10000;
        totalTimeAdding = 0;
        List<Long> projectIds = new ArrayList<>();
        for (int i = 0; i < nrProjects; i++) {
            long s = System.nanoTime();
            try {
                SProject project = client.getServiceInterface().addProject("test" + i, "ifc2x3tc1");
                projectIds.add(project.getOid());
            } catch (Exception e) {
            }
            long e = System.nanoTime();
            totalTimeAdding += (e - s);
            if (i % 100 == 0) {
                System.out.println((totalTimeAdding / 1000000) + " ms for 100 projects");
                totalTimeAdding = 0;
            }
        }
        int nrProjectUserLinks = 100000;
        Random random = new Random();
        totalTimeAdding = 0;
        for (int i = 0; i < nrProjectUserLinks; i++) {
            long s = System.nanoTime();
            client.getServiceInterface().addUserToProject(userIds.get(random.nextInt(userIds.size())), projectIds.get(random.nextInt(projectIds.size())));
            long e = System.nanoTime();
            totalTimeAdding += (e - s);
            if (i % 100 == 0) {
                System.out.println((totalTimeAdding / 1000000) + " ms for 100 projects/user links");
                totalTimeAdding = 0;
            }
        }
        int loginAttempts = 100;
        for (int i = 0; i < loginAttempts; i++) {
            long s = System.nanoTime();
            client.getAuthInterface().login("test" + new Random().nextInt(nrUsers) + "@bimserver.org", "password");
            long e = System.nanoTime();
            totalLoginTime += (e - s);
        }
        System.out.println("Average login time with " + nrUsers + " users in system: " + ((((totalLoginTime / loginAttempts) / 1000000) + " ms")));
    } catch (ServiceException e) {
        e.printStackTrace();
    } catch (PublicInterfaceNotFoundException e) {
        e.printStackTrace();
    }
}
Also used : Random(java.util.Random) ServiceException(org.bimserver.shared.exceptions.ServiceException) SUser(org.bimserver.interfaces.objects.SUser) PublicInterfaceNotFoundException(org.bimserver.shared.exceptions.PublicInterfaceNotFoundException) ArrayList(java.util.ArrayList) BimServerClientInterface(org.bimserver.plugins.services.BimServerClientInterface) SProject(org.bimserver.interfaces.objects.SProject) PublicInterfaceNotFoundException(org.bimserver.shared.exceptions.PublicInterfaceNotFoundException) ServiceException(org.bimserver.shared.exceptions.ServiceException)

Aggregations

SUser (org.bimserver.interfaces.objects.SUser)13 UserException (org.bimserver.shared.exceptions.UserException)9 ServerException (org.bimserver.shared.exceptions.ServerException)8 IOException (java.io.IOException)6 DatabaseSession (org.bimserver.database.DatabaseSession)6 SRevision (org.bimserver.interfaces.objects.SRevision)6 UnsupportedEncodingException (java.io.UnsupportedEncodingException)5 MalformedURLException (java.net.MalformedURLException)5 MessagingException (javax.mail.MessagingException)5 AddressException (javax.mail.internet.AddressException)5 BimserverDatabaseException (org.bimserver.BimserverDatabaseException)5 SProject (org.bimserver.interfaces.objects.SProject)5 CannotBeScheduledException (org.bimserver.longaction.CannotBeScheduledException)5 DeserializeException (org.bimserver.plugins.deserializers.DeserializeException)5 SerializerException (org.bimserver.plugins.serializers.SerializerException)5 BcfException (org.opensourcebim.bcf.BcfException)5 ArrayList (java.util.ArrayList)4 User (org.bimserver.models.store.User)3 PublicInterfaceNotFoundException (org.bimserver.shared.exceptions.PublicInterfaceNotFoundException)3 ServiceException (org.bimserver.shared.exceptions.ServiceException)3