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
			//System.out.println("Storing System Metadata to store: " + pid.getValue());
44
			if (!IdentifierManager.getInstance().identifierExists(pid.getValue())) {
45
				IdentifierManager.getInstance().createSystemMetadata(sm);
46
			} else {
47
				IdentifierManager.getInstance().updateSystemMetadata(sm);
48
			}
49
		} catch (McdbDocNotFoundException e) {
50
			// TODO Auto-generated catch block
51
			e.printStackTrace();
52
		}
53
	}
54

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

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

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

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

    
115
}
(3-3/3)