server/src/main/java/org/iri_research/renkan/models/Project.java
author ymh <ymh.work@gmail.com>
Tue, 23 Apr 2013 16:54:18 +0200
branchuser_management
changeset 215 a282eebbc5e0
parent 135 f3957d594203
child 220 ecbb104cf3b6
permissions -rw-r--r--
- add users to Renkan
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
package org.iri_research.renkan.models;
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
     3
import java.io.UnsupportedEncodingException;
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
     4
import java.security.MessageDigest;
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
     5
import java.security.NoSuchAlgorithmException;
46
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
     6
import java.util.ArrayList;
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
     7
import java.util.Date;
84
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
     8
import java.util.HashMap;
46
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
     9
import java.util.List;
84
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    10
import java.util.Map;
46
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    11
106
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
    12
import javax.crypto.spec.SecretKeySpec;
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
    13
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    14
import org.apache.commons.codec.binary.Hex;
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    15
import org.iri_research.renkan.Constants;
80
5295e118320b add link for publish
ymh <ymh.work@gmail.com>
parents: 77
diff changeset
    16
import org.iri_research.renkan.Constants.EditMode;
215
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    17
import org.iri_research.renkan.utils.ColorGenerator;
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    18
import org.iri_research.renkan.RenkanException;
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
import org.slf4j.Logger;
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
import org.slf4j.LoggerFactory;
84
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    21
import org.springframework.beans.factory.annotation.Autowired;
46
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    22
import org.springframework.data.mongodb.core.mapping.DBRef;
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
import org.springframework.data.mongodb.core.mapping.Document;
71
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    24
import org.springframework.data.mongodb.core.mapping.Field;
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    25
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    26
import com.fasterxml.jackson.annotation.JsonProperty;
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
@Document(collection="projects")
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
public class Project extends AbstractRenkanModel<String> {
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
	
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
	@SuppressWarnings("unused")
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
	private static Logger logger = LoggerFactory.getLogger(Project.class); 
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
			
71
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    34
	@Field("rev_counter")
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
	private int revCounter = 1;
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    36
	
127
906fed13c1e1 space admin edit.
ymh <ymh.work@gmail.com>
parents: 106
diff changeset
    37
	private Date created;
906fed13c1e1 space admin edit.
ymh <ymh.work@gmail.com>
parents: 106
diff changeset
    38
	private Date updated;
71
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    39
	
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    40
	// Space
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    41
	@Field("space_id")
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    42
	@JsonProperty("space_id")
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    43
	private String spaceId = null;
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    44
	
46
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    45
	// Nodes
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    46
	@DBRef
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    47
	private List<Node> nodes = new ArrayList<Node>();
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    48
	
47
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
    49
	// edges
46
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    50
	@DBRef
47
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
    51
	private List<Edge> edges = new ArrayList<Edge>();
46
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    52
47
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
    53
	// Users
215
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    54
	private List<RenkanUser> users = new ArrayList<RenkanUser>();
47
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
    55
	
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
	
84
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    57
	public Project(Project project) {
135
f3957d594203 Replace UUID.RandomUUID by type 1 uuids
ymh <ymh.work@gmail.com>
parents: 127
diff changeset
    58
		this(project.spaceId, Constants.UUID_GENERATOR.generate().toString(), project.title, project.description, project.uri, new Date());
84
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    59
		
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    60
		Map<String, Node> nodeCloneMap = new HashMap<String, Node>(project.nodes.size());
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    61
		for (Node node : project.nodes) {
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    62
			Node newNode = new Node(node,this.id);
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    63
			this.nodes.add(newNode);
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    64
			nodeCloneMap.put(node.id, newNode);
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    65
		}
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    66
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    67
		for (Edge edge : project.edges) {
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    68
			this.edges.add(new Edge(edge, nodeCloneMap.get(edge.getFrom()), nodeCloneMap.get(edge.getTo()), this.id));
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    69
		}
215
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    70
		for(RenkanUser user : project.users) {			
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
    71
			this.users.add(new RenkanUser(user));
84
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    72
		}
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    73
	}
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    74
	
71
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    75
	public Project(String spaceId, String id, String title, String description, String uri, Date created,
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
			int revCounter) {
60
6a3084c7eb98 add color
ymh <ymh.work@gmail.com>
parents: 51
diff changeset
    77
		super(id,title, description, uri, null);
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
		this.revCounter = revCounter;
71
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    79
		this.spaceId = spaceId;
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    80
		this.created = created;
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    81
		if(this.created == null) {
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    82
			this.created = new Date();
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    83
		}
127
906fed13c1e1 space admin edit.
ymh <ymh.work@gmail.com>
parents: 106
diff changeset
    84
		this.setUpdated(new Date()); 
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
	}
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
84
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    87
	@Autowired(required=true)
71
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    88
	public Project(String spaceId, String id, String title, String description, String uri, Date created) {
9af0874ce43f First version of space level.
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    89
		this(spaceId, id,title, description, uri, created, 1);
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
	}
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
	
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
	@SuppressWarnings("unused")
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
	private Project() {		
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
	}
84
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    95
		
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
	public int getRevCounter() {
47
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
    97
		return this.revCounter;
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
	}
46
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    99
	
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
   100
	public List<Node> getNodes() {
47
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
   101
		return this.nodes;
46
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
   102
	}
7e132e2a48ca add most of the model and repositories
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
   103
47
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
   104
	public List<Edge> getEdges() {
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
   105
		return this.edges;
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
   106
	}
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
   107
	
215
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   108
	public List<RenkanUser> getUsers() {
47
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
   109
		return this.users;
267d67791e05 first stabilization of editing a renkan.
ymh <ymh.work@gmail.com>
parents: 46
diff changeset
   110
	}
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   112
	public Date getCreated() {
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   113
		return created;
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   114
	}
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   115
	
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   116
	public void setCreated(Date date) {
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   117
		this.created = date;
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   118
		
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   119
	}
77
4f2511a70880 add bin config from spaces.
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   120
	
4f2511a70880 add bin config from spaces.
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   121
	@JsonProperty("space_id")
4f2511a70880 add bin config from spaces.
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   122
	public String getSpaceId() {
4f2511a70880 add bin config from spaces.
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   123
		return spaceId;
4f2511a70880 add bin config from spaces.
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   124
	}
4f2511a70880 add bin config from spaces.
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   125
80
5295e118320b add link for publish
ymh <ymh.work@gmail.com>
parents: 77
diff changeset
   126
	private String getRawKey(String prefix, Constants.EditMode editMode) {		
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   127
		StringBuffer key = new StringBuffer(prefix!=null?prefix+"|":"");
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   128
		key.append(this.getId());
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   129
		key.append('|');
106
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
   130
		key.append(this.getSpaceId());
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
   131
		key.append('|');
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   132
		key.append(this.getCreated().getTime());
80
5295e118320b add link for publish
ymh <ymh.work@gmail.com>
parents: 77
diff changeset
   133
		key.append('|');
5295e118320b add link for publish
ymh <ymh.work@gmail.com>
parents: 77
diff changeset
   134
		key.append(editMode.toString());
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   135
		return key.toString();
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   136
	}
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   137
	
80
5295e118320b add link for publish
ymh <ymh.work@gmail.com>
parents: 77
diff changeset
   138
	public String getKey(int editMode) throws RenkanException {		
5295e118320b add link for publish
ymh <ymh.work@gmail.com>
parents: 77
diff changeset
   139
		return this.getKey(EditMode.fromInt(editMode));
5295e118320b add link for publish
ymh <ymh.work@gmail.com>
parents: 77
diff changeset
   140
	}
5295e118320b add link for publish
ymh <ymh.work@gmail.com>
parents: 77
diff changeset
   141
	
5295e118320b add link for publish
ymh <ymh.work@gmail.com>
parents: 77
diff changeset
   142
	public String getKey(Constants.EditMode editMode) throws RenkanException {
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   143
		
106
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
   144
		String rawKey = this.getRawKey("", editMode);
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   145
		
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   146
		MessageDigest md;
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   147
		try {
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   148
			md = MessageDigest.getInstance("SHA-256");
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   149
		} catch (NoSuchAlgorithmException e) {
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   150
			throw new RenkanException("NoSuchAlgorithmException digest: " + e.getMessage(), e);
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   151
		}
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   152
		String key;
106
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
   153
		final SecretKeySpec secret_key = new SecretKeySpec(Constants.KEYHEX.getBytes(), "HmacSHA256");
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
   154
		md.update(secret_key.getEncoded());
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   155
		try {
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   156
			key = Hex.encodeHexString(md.digest(rawKey.getBytes("UTF-8")));
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   157
		} catch (UnsupportedEncodingException e) {
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   158
			throw new RenkanException("UnsupportedEncodingException digest: " + e.getMessage(), e);
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   159
		}
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   160
		
106
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
   161
		return key;
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   162
	}
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   163
	
80
5295e118320b add link for publish
ymh <ymh.work@gmail.com>
parents: 77
diff changeset
   164
	public boolean checkKey(String key, Constants.EditMode editMode) throws RenkanException {
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   165
		
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   166
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   167
		if(key == null || key.isEmpty()) {
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   168
			return false;
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   169
		}
106
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
   170
				
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
   171
		String signature = key;
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   172
		
106
d34e253f5c32 Simplify spring integration + correct key for collaborative usage
ymh <ymh.work@gmail.com>
parents: 84
diff changeset
   173
		String new_key = this.getKey(editMode);
51
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   174
		
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   175
		return new_key.equals(signature);
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   176
	}
3247fccfbd3f update on renkan
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
   177
127
906fed13c1e1 space admin edit.
ymh <ymh.work@gmail.com>
parents: 106
diff changeset
   178
	public Date getUpdated() {
906fed13c1e1 space admin edit.
ymh <ymh.work@gmail.com>
parents: 106
diff changeset
   179
		return updated;
906fed13c1e1 space admin edit.
ymh <ymh.work@gmail.com>
parents: 106
diff changeset
   180
	}
906fed13c1e1 space admin edit.
ymh <ymh.work@gmail.com>
parents: 106
diff changeset
   181
906fed13c1e1 space admin edit.
ymh <ymh.work@gmail.com>
parents: 106
diff changeset
   182
	public void setUpdated(Date updated) {
906fed13c1e1 space admin edit.
ymh <ymh.work@gmail.com>
parents: 106
diff changeset
   183
		this.updated = updated;
84
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   184
	}
b4b83e9b808d Add copy for projects
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   185
	
215
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   186
	public void addUser(User user) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   187
		
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   188
		if(user == null) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   189
			// we add an anonymous user
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   190
			// find an unique user name
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   191
			this.addUser(null, null);
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   192
		}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   193
		else {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   194
			// if user is already in list do nothing
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   195
			for (RenkanUser renkanUser : this.users) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   196
				if(renkanUser.getUserId() != null && renkanUser.getUserId().equals(user.getId())) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   197
					return;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   198
				}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   199
			}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   200
			// user not found 
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   201
			this.users.add(new RenkanUser(this.getId(), user.getId(), user.getColor(), user.getUsername()));
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   202
			
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   203
		}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   204
		
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   205
	}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   206
	
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   207
	public void addUser(String username, String color) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   208
		
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   209
		if(username == null) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   210
			//find a new username
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   211
			int i = 0;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   212
			boolean usernameFound = true;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   213
			while(i++<1000000 && usernameFound) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   214
				username = String.format("%s-%s", Constants.ANONYMOUS_USER_BASE_NAME, i);
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   215
				usernameFound = false;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   216
				for(RenkanUser renkanUser : this.users) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   217
					if(username.equals(renkanUser.getUsername())) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   218
						usernameFound = true;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   219
						break;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   220
					}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   221
				}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   222
			}			
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   223
		}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   224
		
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   225
		if(color == null) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   226
			int i=0;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   227
			boolean colorFound = true;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   228
			while(i++<10000000 && colorFound) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   229
				color = "#" + ColorGenerator.randomColorHex();
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   230
				colorFound = false;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   231
				for(RenkanUser renkanUser : this.users) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   232
					if(username.equals(renkanUser.getUsername())) {
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   233
						colorFound = true;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   234
						break;
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   235
					}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   236
				}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   237
			}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   238
		}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   239
		
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   240
		RenkanUser ruser = new RenkanUser(this.getId(), null, color, username);
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   241
		this.users.add(ruser);
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   242
	}
a282eebbc5e0 - add users to Renkan
ymh <ymh.work@gmail.com>
parents: 135
diff changeset
   243
	
45
37c9a17c3284 - add Spring
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
}