Project

General

Profile

1
package edu.ucsb.nceas.metacat.dataone.hazelcast;
2

    
3
import java.sql.SQLException;
4
import java.util.Collection;
5
import java.util.HashMap;
6
import java.util.HashSet;
7
import java.util.Map;
8
import java.util.Set;
9

    
10
import org.dataone.service.types.v1.Identifier;
11
import org.dataone.service.types.v1.ObjectInfo;
12
import org.dataone.service.types.v1.ObjectList;
13
import org.dataone.service.types.v1.SystemMetadata;
14

    
15
import com.hazelcast.core.MapLoader;
16
import com.hazelcast.core.MapStore;
17

    
18
import edu.ucsb.nceas.metacat.IdentifierManager;
19
import edu.ucsb.nceas.metacat.McdbDocNotFoundException;
20
import edu.ucsb.nceas.metacat.shared.ServiceException;
21
import edu.ucsb.nceas.utilities.PropertyNotFoundException;
22

    
23
/**
24
 * Storage implementation for Hazelcast System Metadata
25
 * @author leinfelder
26
 *
27
 */
28
public class SystemMetadataMap implements MapStore<Identifier, SystemMetadata>, MapLoader<Identifier, SystemMetadata> {
29

    
30
	@Override
31
	public void delete(Identifier arg0) {
32
		// we do not delete system metadata
33
	}
34

    
35
	@Override
36
	public void deleteAll(Collection<Identifier> arg0) {
37
		// we do not delete system metadata	
38
	}
39

    
40
	@Override
41
	public void store(Identifier pid, SystemMetadata sm) {
42
		try {
43
			if (!IdentifierManager.getInstance().identifierExists(pid.getValue())) {
44
				IdentifierManager.getInstance().createSystemMetadata(sm);
45
			} else {
46
				IdentifierManager.getInstance().updateSystemMetadata(sm);
47
			}
48
		} catch (McdbDocNotFoundException e) {
49
			// TODO Auto-generated catch block
50
			e.printStackTrace();
51
		}
52
	}
53

    
54
	@Override
55
	public void storeAll(Map<Identifier, SystemMetadata> map) {
56
		for (Identifier key: map.keySet()) {
57
			store(key, map.get(key));
58
		}
59
	}
60

    
61
	@Override
62
	public SystemMetadata load(Identifier pid) {
63
		SystemMetadata sm = null;
64
		try {
65
			System.out.println("loading from store: " + pid.getValue());
66
			sm = IdentifierManager.getInstance().getSystemMetadata(pid.getValue());
67
		} catch (McdbDocNotFoundException e) {
68
			// TODO Auto-generated catch block
69
			e.printStackTrace();
70
		}
71
		return sm;
72
	}
73

    
74
	@Override
75
	public Map<Identifier, SystemMetadata> loadAll(Collection<Identifier> keys) {
76
		Map<Identifier, SystemMetadata> map = new HashMap<Identifier, SystemMetadata>();
77
		for (Identifier key: keys) {
78
			SystemMetadata value = load(key);
79
			map.put(key, value);
80
		}
81
		return map;
82
	}
83

    
84
	@Override
85
	public Set<Identifier> loadAllKeys() {
86
		Set<Identifier> pids = new HashSet<Identifier>();
87
		try {
88
			ObjectList ol = IdentifierManager.getInstance().querySystemMetadata(
89
					null, //startTime, 
90
					null, //endTime, 
91
					null, //objectFormatId, 
92
					false, //replicaStatus, 
93
					0, //start, 
94
					-1 //count
95
					);
96
			for (ObjectInfo o: ol.getObjectInfoList()) {
97
				Identifier pid = o.getIdentifier();
98
				pids.add(pid);
99
			}
100
		} catch (PropertyNotFoundException e) {
101
			// TODO Auto-generated catch block
102
			e.printStackTrace();
103
		} catch (ServiceException e) {
104
			// TODO Auto-generated catch block
105
			e.printStackTrace();
106
		} catch (SQLException e) {
107
			// TODO Auto-generated catch block
108
			e.printStackTrace();
109
		}
110
		
111
		return pids;
112
	}
113

    
114
}
(4-4/4)