/** * Copyright © 2014 Instituto Superior Técnico * * This file is part of FenixEdu CMS. * * FenixEdu CMS is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FenixEdu CMS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with FenixEdu CMS. If not, see <http://www.gnu.org/licenses/>. */ package org.fenixedu.cms.domain; import java.io.StringWriter; import org.fenixedu.bennu.core.domain.User; import org.fenixedu.cms.ui.SiteActivityRender; import org.fenixedu.commons.i18n.LocalizedString; import org.joda.time.DateTime; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class SiteActivity extends SiteActivity_Base { public SiteActivity(Site site) { super(); setSite(site); } public JsonElement getContent() { return new JsonParser().parse(super.getContent().toString()); } protected static void makeActivity(Site site, JsonElement element) { SiteActivity activity = new SiteActivity(site); activity.setEventDate(new DateTime()); activity.setContent(element); site.pushActivity(activity); } private static JsonObject siteActivity(Site site, User user, String type) { JsonObject object = new JsonObject(); object.addProperty("type", type); object.addProperty("site", site.getExternalId()); object.add("siteName", site.getName().json()); object.addProperty("siteSlug", site.getSlug()); object.addProperty("user", user.getUsername()); object.addProperty("userName", user.getProfile().getDisplayName()); makeActivity(site, object); return object; } public static void createdSite(Site site, User user) { siteActivity(site, user, "siteCreated"); } public static void clonedSite(Site site, User user) { siteActivity(site, user, "siteCloned"); } public static void importedSite(Site site, User user) { siteActivity(site, user, "siteImported"); } public static void createdPost(Post post, User user) { JsonObject object = new JsonObject(); object.addProperty("type", "postCreated"); object.addProperty("post", post.getExternalId()); object.add("postName", post.getName().json()); object.addProperty("postSlug", post.getSlug()); object.addProperty("user", user.getUsername()); object.addProperty("userName", user.getProfile().getDisplayName()); makeActivity(post.getSite(), object); } public static void editedPost(Post post, User user) { JsonObject object = new JsonObject(); object.addProperty("type","postEdited"); object.addProperty("post",post.getExternalId()); object.add("postName", post.getName().json()); object.addProperty("postSlug", post.getSlug()); object.addProperty("user", user.getUsername()); object.addProperty("userName", user.getProfile().getDisplayName()); makeActivity(post.getSite(),object); } public static void deletedPost(Post post, Site site, User user){ JsonObject object = new JsonObject(); object.addProperty("type","postDeleted"); object.addProperty("post", (String) null); object.add("postName", post.getName().json()); object.addProperty("pageSlug",(String) null); object.addProperty("user", user.getUsername()); object.addProperty("userName", user.getProfile().getDisplayName()); makeActivity(site,object); } public static void createdPage(Page page, User user) { JsonObject object = new JsonObject(); object.addProperty("type", "pageCreated"); object.addProperty("post", page.getExternalId()); object.add("pageName", page.getName().json()); object.addProperty("pageSlug", page.getSlug()); object.addProperty("user", user.getUsername()); object.addProperty("userName", user.getProfile().getDisplayName()); makeActivity(page.getSite(), object); } public static void editedPage(Page page, User user) { JsonObject object = new JsonObject(); object.addProperty("type","pageEdited"); object.addProperty("post",page.getExternalId()); object.add("pageName", page.getName().json()); object.addProperty("pageSlug", page.getSlug()); object.addProperty("user", user.getUsername()); object.addProperty("userName", user.getProfile().getDisplayName()); makeActivity(page.getSite(),object); } public static void deletedPage(Page page, Site site, User user){ JsonObject object = new JsonObject(); object.addProperty("type","pageDeleted"); object.addProperty("post", (String) null); object.add("pageName", page.getName().json()); object.addProperty("pageSlug",(String) null); object.addProperty("user", user.getUsername()); object.addProperty("userName", user.getProfile().getDisplayName()); makeActivity(site,object); } public void delete() { setPrevious(null); setNext(null); setSite(null); setLastActivityLineSite(null); deleteDomainObject(); } public String getRender() { StringWriter sw = new StringWriter(); SiteActivityRender.render(this, sw); return sw.toString(); } }