All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.activitystream.Comment Maven / Gradle / Ivy

Go to download

For a description please see https://github.com/activitystream/as-sdk-java

There is a newer version: 0.5.8
Show newest version
package com.activitystream;

import com.activitystream.helpers.DateHelpers;
import com.activitystream.helpers.MapCreator;
import com.activitystream.underware.Factories;
import com.activitystream.underware.Trimmer;
import com.activitystream.underware.Version;
import org.json.simple.JSONObject;

import java.text.SimpleDateFormat;
import java.util.*;

public class Comment {

    private final String comment;
    private List involved = new ArrayList<>();
    private List aspects = new ArrayList<>();
    private String timestamp;
    private String origin;

    public Comment(String comment) { this.comment = comment; }

    public Comment involves(CommentEntityRole... role) {
        if (role != null) this.involved.addAll(Arrays.asList(role));
        return this;
    }

    public Comment aspects(Aspect... aspects) {
        this.aspects.addAll(Arrays.asList(aspects));
        return this;
    }

    public Comment occurred(Date timestamp, TimeZone timeZone) {
        SimpleDateFormat formatter = (SimpleDateFormat) DateHelpers.dateFormatter.clone();
        formatter.setTimeZone(timeZone);

        this.timestamp = formatter.format(timestamp);
        return this;
    }

    public Comment occurred(String timestamp) {
        DateHelpers.validateDateString(timestamp);
        this.timestamp = timestamp;
        return this;
    }

    public Comment origin(String origin) {
        this.origin = origin;
        return this;
    }

    public String toJson() {
        return JSONObject.toJSONString(toMap()).replace("\\/", "/");
    }

    public Map toMap() {
        Map obj = Factories.getMap();
        Set processed = new HashSet<>();
        obj.put("type", "as.api.comment");
        obj.put("origin", origin);
        obj.put("occurred_at", timestamp);
        obj.put("comment", comment);

        List inv = new ArrayList();
        for (CommentEntityRole anInvolved : involved) {
            if (anInvolved != null) {
                inv.add(anInvolved.render(processed));
            }
        }
        obj.put("involves", inv);

        Map aspectsJson = Factories.getMap();
        for (Aspect aspect : aspects) {
            if (aspect != null) {
                aspect.addToObject(aspectsJson, processed);
            }
        }
        obj.put("aspects", aspectsJson);
        obj.put("_v", Version.sdkVersion);
        Trimmer.trimMap(obj);
        return obj;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy