use of org.activityinfo.server.database.hibernate.entity.User in project activityinfo by bedatadriven.
the class UserDigestResource method createUserDigest.
@GET
@Produces(MediaType.TEXT_HTML)
public String createUserDigest(@QueryParam(PARAM_USER) int userId, @QueryParam(PARAM_NOW) Long now, @QueryParam(PARAM_DAYS) int days, @QueryParam(PARAM_SENDEMAIL) @DefaultValue(PARAM_SENDEMAIL_DEF) boolean sendEmail) throws IOException, MessagingException {
if (userId <= 0) {
return "no user specified";
}
Date date = now == null ? new Date() : new Date(now);
if (days <= 0) {
days = getDefaultDays();
}
User user = entityManager.get().find(User.class, userId);
if (!user.isEmailNotification()) {
return "user's email notification flag is set to false.";
}
UserToken userToken = UserTokenManager.create(userId, UserTokenScope.SUBSCRIBE, UserTokenScope.UNSUBSCRIBE);
authProvider.set(user);
LOGGER.info("creating digest for " + user.getEmail() + " on " + DateFormatter.formatDateTime(date) + " for activity period: " + days + " day(s)." + " (sending email: " + sendEmail + ")");
UserDigest userDigest = new UserDigest(user, date, days, userToken.getSecureToken());
DigestMessageBuilder digest = new DigestMessageBuilder(digestModelBuilder, digestRenderer);
digest.setUserDigest(userDigest);
Message message = digest.build();
if (message != null && sendEmail) {
mailSender.get().send(message);
}
return message == null ? "no updates found" : message.getHtmlBody();
}
use of org.activityinfo.server.database.hibernate.entity.User in project activityinfo by bedatadriven.
the class KmlActivityServlet method doGet.
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
// Get Authorization header
String auth = req.getHeader("Authorization");
// Do we allow that user?
User user = authenticator.doAuthentication(auth);
if (user == null) {
// Not allowed, or no password provided so report unauthorized
res.setHeader("WWW-Authenticate", "BASIC realm=\"ActivityInfo\"");
res.sendError(HttpServletResponse.SC_UNAUTHORIZED);
return;
}
String baseURL = (req.isSecure() ? "https" : "http") + "://" + req.getServerName() + ":" + req.getServerPort() + "/earth/sites?activityId=";
SchemaDTO schemaDTO = dispatcher.execute(new GetSchema());
Map<String, Object> map = new HashMap<String, Object>();
map.put("schema", schemaDTO);
map.put("baseURL", baseURL);
Template tpl = templateCfg.getTemplate("kml/ActivitiesNetworkLink.kml.ftl");
res.setContentType("application/vnd.google-earth.kml+xml; filename=ActivityInfo.kml");
res.setCharacterEncoding("UTF-8");
try {
tpl.process(map, res.getWriter());
} catch (TemplateException e) {
LOGGER.log(Level.SEVERE, "Exception rendering KML", e);
res.setStatus(500);
}
}
use of org.activityinfo.server.database.hibernate.entity.User in project activityinfo by bedatadriven.
the class LocationBuilderTest method sqlBuilding.
@Test
@OnDataSet("/dbunit/sites-simple1.db.xml")
public void sqlBuilding() throws Exception {
EntityManager em = emf.createEntityManager();
int locationType = 3;
GetSyncRegionUpdates request = new GetSyncRegionUpdates("location/" + locationType, null);
LocationUpdateBuilder builder = new LocationUpdateBuilder(em);
SyncRegionUpdate update = builder.build(new User(), request);
System.out.println("sql: " + update.getSql());
System.out.println("size: " + update.getSql().length());
assertThat(update.getSql(), containsString("location"));
assertThat(update.getSql(), containsString("locationadminlink"));
assertThat(update.getSql(), containsString("Shabunda"));
// admin level for Shabunda
assertThat(update.getSql(), containsString("12,7"));
}
use of org.activityinfo.server.database.hibernate.entity.User in project activityinfo by bedatadriven.
the class LocationBuilderTest method locationTypeChange.
@Test
@OnDataSet("/dbunit/sites-simple1.db.xml")
public void locationTypeChange() throws Exception {
EntityManager em = emf.createEntityManager();
User user = em.find(User.class, 1);
// Update the location type 1
Map<String, Object> changes = new HashMap<>();
changes.put("name", "Ishamael");
em.getTransaction().begin();
LocationTypePolicy locationTypePolicy = new LocationTypePolicy(em);
locationTypePolicy.update(user, 1, new PropertyMap(changes));
em.getTransaction().commit();
// First update should include this change
String regionId = "location/" + 1;
LocationUpdateBuilder builder = new LocationUpdateBuilder(em);
GetSyncRegionUpdates request = new GetSyncRegionUpdates(regionId, null);
SyncRegionUpdate update = builder.build(user, request);
assertThat(update.isComplete(), equalTo(true));
assertThat(update.getSql(), containsString("Ishamael"));
// We should be up to date now...
GetSyncRegionsHandler getSyncRegionsHandler = new GetSyncRegionsHandler(em);
SyncRegions syncRegions = getSyncRegionsHandler.execute(new GetSyncRegions(), user);
System.out.println(syncRegions.getList());
assertThat(syncRegions, hasItem(new SyncRegion(regionId, update.getVersion())));
}
use of org.activityinfo.server.database.hibernate.entity.User in project activityinfo by bedatadriven.
the class SiteUpdateBuilderTest method subsequentCallsAreUpToDate.
@Test
@OnDataSet("/dbunit/sites-simple1.db.xml")
public void subsequentCallsAreUpToDate() throws Exception {
User user = new User();
user.setId(1);
// update one of the sites so we have a realistic nano value type stamp
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Site site = em.find(Site.class, 1);
site.setComments("I'm slightly new");
site.setDateEdited(new Date());
em.getTransaction().commit();
em.close();
SyncRegionUpdate initialUpdate = builder.get().build(user, new GetSyncRegionUpdates("sites/1", null));
assertThat(initialUpdate.isComplete(), equalTo(true));
assertThat(initialUpdate.getSql(), not(nullValue()));
assertThat(initialUpdate.getSql(), containsString("slightly new"));
System.out.println(initialUpdate.getSql());
// nothing has changed!
SyncRegionUpdate subsequentUpdate = builder.get().build(user, new GetSyncRegionUpdates("sites/1", initialUpdate.getVersion()));
assertThat(subsequentUpdate.isComplete(), equalTo(true));
assertThat(subsequentUpdate.getSql(), nullValue());
assertThat(subsequentUpdate.getVersion(), equalTo(initialUpdate.getVersion()));
}
Aggregations