001/*
002 * (C) Copyright 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the GNU Lesser General Public License
006 * (LGPL) version 2.1 which accompanies this distribution, and is available at
007 * http://www.gnu.org/licenses/lgpl-2.1.html
008 *
009 * This library is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012 * Lesser General Public License for more details.
013 *
014 * Contributors:
015 *     Thomas Roger <troger@nuxeo.com>
016 */
017
018package org.nuxeo.ecm.activity;
019
020import java.util.Date;
021
022/**
023 * @author <a href="mailto:troger@nuxeo.com">Thomas Roger</a>
024 * @since 5.5
025 */
026public final class ActivityBuilder {
027
028    private String actor;
029
030    private String displayActor;
031
032    private String verb;
033
034    private String object;
035
036    private String displayObject;
037
038    private String target;
039
040    private String displayTarget;
041
042    private String context;
043
044    private Date publishedDate;
045
046    public ActivityBuilder() {
047        // Empty constructor
048    }
049
050    public ActivityBuilder(Activity fromActivity) {
051        actor(fromActivity.getActor());
052        context(fromActivity.getContext());
053        displayActor(fromActivity.getDisplayActor());
054        displayTarget(fromActivity.getDisplayTarget());
055        displayObject(fromActivity.getDisplayObject());
056        target(fromActivity.getTarget());
057        verb(fromActivity.getVerb());
058        object(fromActivity.getObject());
059    }
060
061    public ActivityBuilder actor(String actor) {
062        this.actor = actor;
063        return this;
064    }
065
066    public ActivityBuilder displayActor(String displayActor) {
067        this.displayActor = displayActor;
068        return this;
069    }
070
071    public ActivityBuilder verb(String verb) {
072        this.verb = verb;
073        return this;
074    }
075
076    public ActivityBuilder object(String object) {
077        this.object = object;
078        return this;
079    }
080
081    public ActivityBuilder displayObject(String displayObject) {
082        this.displayObject = displayObject;
083        return this;
084    }
085
086    public ActivityBuilder target(String target) {
087        this.target = target;
088        return this;
089    }
090
091    public ActivityBuilder displayTarget(String displayTarget) {
092        this.displayTarget = displayTarget;
093        return this;
094    }
095
096    public ActivityBuilder context(String context) {
097        this.context = context;
098        return this;
099    }
100
101    public ActivityBuilder publishedDate(Date publishedDate) {
102        this.publishedDate = publishedDate;
103        return this;
104    }
105
106    public Activity build() {
107        Activity activity = new ActivityImpl();
108        activity.setActor(actor);
109        activity.setDisplayActor(displayActor);
110        activity.setObject(object);
111        activity.setDisplayObject(displayObject);
112        activity.setTarget(target);
113        activity.setDisplayTarget(displayTarget);
114        activity.setContext(context);
115        activity.setVerb(verb);
116        Date date = publishedDate != null ? publishedDate : new Date();
117        activity.setPublishedDate(date);
118        activity.setLastUpdatedDate(date);
119        return activity;
120    }
121
122}