libreccm-legacy/ccm-weblog/src/org/undp/weblog/WebLog.java

137 lines
3.1 KiB
Java
Executable File

package org.undp.weblog;
import java.math.BigDecimal;
import java.util.Date;
import org.apache.log4j.Logger;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.kernel.User;
import com.arsdigita.kernel.permissions.PermissionService;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
/**
* @author Peter Kopunec
*/
public class WebLog extends ACSObject {
public static final String BASE_DATA_OBJECT_TYPE = WebLog.class.getName();
public static final String PARAM_TITLE = "title";
public static final String PARAM_LEAD = "lead";
public static final String PARAM_BODY = "body";
public static final String PARAM_MODIFIED = "modified";
public static final String PARAM_APPLICATION = "webLogApp";
public static final String PARAM_OWNER = "owner";
private static final Logger s_log = Logger.getLogger(WebLog.class);
public WebLog() {
super(BASE_DATA_OBJECT_TYPE);
}
public WebLog(DataObject dataObject) {
super(dataObject);
}
public WebLog(BigDecimal id) {
super(new OID(BASE_DATA_OBJECT_TYPE, id));
}
protected String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE;
}
public void setTitle(String title) {
set(PARAM_TITLE, title);
}
public void setLead(String lead) {
set(PARAM_LEAD, lead);
}
public void setBody(String body) {
set(PARAM_BODY, body);
}
public void setApplication(WebLogApplication app) {
setAssociation(PARAM_APPLICATION, app);
}
public void setOwner(User owner) {
setAssociation(PARAM_OWNER, owner);
}
public String getTitle() {
return (String) get(PARAM_TITLE);
}
public String getLead() {
return (String) get(PARAM_LEAD);
}
public String getBody() {
return (String) get(PARAM_BODY);
}
public Date getModified() {
return (Date) get(PARAM_MODIFIED);
}
public WebLogApplication getApplication() {
DataObject entityAppData = (DataObject) get(PARAM_APPLICATION);
if (entityAppData != null) {
return new WebLogApplication(entityAppData);
}
return null;
}
public User getOwner() {
DataObject entityData = (DataObject) get(PARAM_OWNER);
if (entityData != null) {
return User.retrieve(entityData);
}
return null;
}
protected void beforeSave() {
set(PARAM_MODIFIED, new Date());
super.beforeSave();
}
protected void beforeDelete() {
DataCollection coll = SessionManager.getSession().retrieve(
WebLogComment.BASE_DATA_OBJECT_TYPE);
coll.addEqualsFilter(WebLogComment.PARAM_WEBLOG + '.' + ID, getID());
WebLogComment comment;
while (coll.next()) {
comment = new WebLogComment(coll.getDataObject());
comment.delete();
}
coll.close();
super.beforeDelete();
}
public DataCollection getComments() {
DataCollection coll = SessionManager.getSession().retrieve(
WebLogComment.BASE_DATA_OBJECT_TYPE);
coll.addEqualsFilter(WebLogComment.PARAM_WEBLOG + '.' + ID, getID());
coll.addOrder(WebLogComment.PARAM_MODIFIED + " desc");
return coll;
}
protected void afterSave() {
super.afterSave();
PermissionService.setContext(this, getApplication());
}
}