Search in sources :

Example 41 with User

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();
}
Also used : User(org.activityinfo.server.database.hibernate.entity.User) Message(org.activityinfo.server.mail.Message) Date(java.util.Date) UserToken(org.activityinfo.server.authentication.UserToken) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 42 with User

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);
    }
}
Also used : User(org.activityinfo.server.database.hibernate.entity.User) HashMap(java.util.HashMap) TemplateException(freemarker.template.TemplateException) SchemaDTO(org.activityinfo.legacy.shared.model.SchemaDTO) GetSchema(org.activityinfo.legacy.shared.command.GetSchema) Template(freemarker.template.Template)

Example 43 with User

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"));
}
Also used : GetSyncRegionUpdates(org.activityinfo.legacy.shared.command.GetSyncRegionUpdates) EntityManager(javax.persistence.EntityManager) User(org.activityinfo.server.database.hibernate.entity.User) SyncRegionUpdate(org.activityinfo.legacy.shared.command.result.SyncRegionUpdate) OnDataSet(org.activityinfo.server.database.OnDataSet) Test(org.junit.Test)

Example 44 with User

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())));
}
Also used : GetSyncRegionUpdates(org.activityinfo.legacy.shared.command.GetSyncRegionUpdates) User(org.activityinfo.server.database.hibernate.entity.User) HashMap(java.util.HashMap) LocationTypePolicy(org.activityinfo.server.command.handler.crud.LocationTypePolicy) SyncRegions(org.activityinfo.legacy.shared.command.result.SyncRegions) GetSyncRegions(org.activityinfo.legacy.shared.command.GetSyncRegions) GetSyncRegions(org.activityinfo.legacy.shared.command.GetSyncRegions) SyncRegion(org.activityinfo.legacy.shared.command.result.SyncRegion) EntityManager(javax.persistence.EntityManager) PropertyMap(org.activityinfo.server.command.handler.crud.PropertyMap) SyncRegionUpdate(org.activityinfo.legacy.shared.command.result.SyncRegionUpdate) GetSyncRegionsHandler(org.activityinfo.server.command.handler.GetSyncRegionsHandler) OnDataSet(org.activityinfo.server.database.OnDataSet) Test(org.junit.Test)

Example 45 with User

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()));
}
Also used : Site(org.activityinfo.server.database.hibernate.entity.Site) GetSyncRegionUpdates(org.activityinfo.legacy.shared.command.GetSyncRegionUpdates) EntityManager(javax.persistence.EntityManager) User(org.activityinfo.server.database.hibernate.entity.User) SyncRegionUpdate(org.activityinfo.legacy.shared.command.result.SyncRegionUpdate) Date(java.util.Date) OnDataSet(org.activityinfo.server.database.OnDataSet) Test(org.junit.Test)

Aggregations

User (org.activityinfo.server.database.hibernate.entity.User)51 Test (org.junit.Test)19 Date (java.util.Date)7 EntityManager (javax.persistence.EntityManager)7 NoResultException (javax.persistence.NoResultException)7 AuthenticatedUser (org.activityinfo.legacy.shared.AuthenticatedUser)6 Database (org.activityinfo.server.database.hibernate.entity.Database)6 IOException (java.io.IOException)5 ServletException (javax.servlet.ServletException)4 GET (javax.ws.rs.GET)3 Produces (javax.ws.rs.Produces)3 GetSyncRegionUpdates (org.activityinfo.legacy.shared.command.GetSyncRegionUpdates)3 SyncRegionUpdate (org.activityinfo.legacy.shared.command.result.SyncRegionUpdate)3 OnDataSet (org.activityinfo.server.database.OnDataSet)3 Transactional (org.activityinfo.server.database.hibernate.dao.Transactional)3 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 POST (javax.ws.rs.POST)2 Filter (org.activityinfo.legacy.shared.command.Filter)2 PivotSites (org.activityinfo.legacy.shared.command.PivotSites)2