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();
}
}
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());
}
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();
}
}
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();
}
}
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();
}
}
Aggregations