view app/models/UserModel.java @ 113:790f37202698 draft

add label
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Mon, 18 Mar 2013 05:28:06 +0900
parents bb547f2a3c88
children
line wrap: on
line source

package models;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;

import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.gremlin.java.GremlinPipeline;

public class UserModel extends NodeModel {
	
	
	public UserModel(Vertex vertex) {
		super(vertex);
	}
	
	private Object[] getVertexRelatedUser(String labels) {
		GremlinPipeline<Vertex,Vertex> pipe = new GremlinPipeline<Vertex,Vertex>();
		pipe.start(this.vertex).in(labels);
		ArrayList<Object> array = new ArrayList<Object>();
		for (Vertex v : pipe) {
			array.add(v.getId());
		}
		if (array.size() == 0) return null;
		return array.toArray();
	}
	
	public Object[] getUserRequests() {
		return getVertexRelatedUser(L_REQUEST);
	}
	
	public Object[] getUserClaims() {
		return getVertexRelatedUser(L_AUTHOR);
	}
	
	private Object[] getLatestVertexRelatedUser(String labels) {
		TPGraph tpGraph = TPGraph.getInstance();
		Object[] vIds = getVertexRelatedUser(labels);
		Object[] vArray = tpGraph.checkLatestVertices(vIds);
		return vArray;
	}
	
	public Object[] getLatestUserRequests() {
		return getLatestVertexRelatedUser(L_REQUEST);
	}
	
	public Object[] getLatestUserClaims() {
		return getLatestVertexRelatedUser(L_AUTHOR);
	}
	
	public HashSet<Object> getClaimsAndRequests() {
		Object[] requests = getUserRequests();
		Object[] claims = getUserClaims();
		return makeSet(requests, claims);
	}
	
	public HashSet<Object> getLatestClaimsAndRequests() {
		Object[] requests = getLatestUserRequests();
		Object[] claims = getLatestUserClaims();
		return makeSet(requests, claims);
	}
	
	private HashSet<Object> makeSet(Object[] obj1, Object[] obj2) {
		HashSet<Object> set = new HashSet<Object>();
		if (obj1 != null)
			for (Object o : obj1) set.add(o);
		if (obj2 != null) 
			for (Object o : obj2) set.add(o);
		if (set.size() == 0) return null;
		return set;
	}
	
	public HashMap<Object,Object[]> getUserInfo() {
		TPGraph tpGraph = TPGraph.getInstance();
		Object[] requests = getUserRequests();
		Object[] claims = getUserClaims();
		HashMap<Object,Object[]> hash = new HashMap<Object, Object[]>();
		hash.put(NodeModel.REQUESTS, requests);
		hash.put(NodeModel.CLAIM, claims);
		HashSet<Object> set = makeSet(requests, claims);
		hash.put(NodeModel.CONSENSUS, tpGraph.checkConsensus(set));
		return hash;
	}
	
}