View Javadoc

1   /*
2    * This file is a part of CAST project.
3    * (c) Copyright 2007, AGH University of Science & Technology
4    * https://caribou.iisg.agh.edu.pl/trac/cast
5    *
6    * Licensed under the Eclipse Public License, Version 1.0 (the "License").
7    * You may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    * http://www.eclipse.org/legal/epl-v10.html
10   */
11  /*
12   * File: RuntimePersistenceProvider.java
13   * Created: 2009-07-06
14   * Author: tmilos
15   * $Id$
16   */
17  
18  package pl.edu.agh.cast.data.persistence.runtime;
19  
20  import java.util.ArrayList;
21  import java.util.Collections;
22  import java.util.HashMap;
23  import java.util.LinkedList;
24  import java.util.List;
25  import java.util.UUID;
26  
27  import pl.edu.agh.cast.data.model.DataSetDescriptor;
28  import pl.edu.agh.cast.data.model.IDataSet;
29  import pl.edu.agh.cast.data.model.IElement;
30  import pl.edu.agh.cast.data.model.general.IGeneralDataSet;
31  import pl.edu.agh.cast.data.model.general.IGeneralElement;
32  import pl.edu.agh.cast.data.model.general.sample.SampleGeneralDataSet;
33  import pl.edu.agh.cast.data.persistence.AbstractPersistenceProvider;
34  import pl.edu.agh.cast.data.persistence.IPersistenceProvider;
35  
36  /**
37   * Runtime implementation of {@link IPersistenceProvider}. It does not persist the data between application executions.
38   *
39   * @see IPersistenceProvider
40   *
41   * @author AGH CAST Team
42   */
43  public class RuntimePersistenceProvider extends AbstractPersistenceProvider implements IPersistenceProvider {
44  
45  	private HashMap<UUID, IDataSet<? extends IElement>> dsMap = new HashMap<UUID, IDataSet<? extends IElement>>();
46  
47  	private List<DataSetDescriptor> dsDescriptors = new LinkedList<DataSetDescriptor>();
48  
49  	/**
50  	 * Constructor.
51  	 */
52  	@SuppressWarnings("nls")
53  	public RuntimePersistenceProvider() {
54  
55  		IGeneralDataSet<IGeneralElement> gds = new SampleGeneralDataSet("Sample GDS");
56  
57  		dsMap.put(gds.getId(), gds);
58  		dsDescriptors.add(gds.getDescriptor());
59  
60  	}
61  
62  	protected List<IDataSet<? extends IElement>> getAllDataSets() {
63  		return new ArrayList<IDataSet<? extends IElement>>(dsMap.values());
64  	}
65  
66  	protected void addDataSet(IDataSet<? extends IElement> dataSet) {
67  		dsMap.put(dataSet.getId(), dataSet);
68  		if (!dsDescriptors.contains(dataSet.getDescriptor())) {
69  			dsDescriptors.add(dataSet.getDescriptor());
70  		}
71  	}
72  
73  	protected void clearDataSets() {
74  		dsMap.clear();
75  		dsDescriptors.clear();
76  	}
77  
78  	/**
79  	 * {@inheritDoc}
80  	 *
81  	 * @see pl.edu.agh.cast.data.persistence.IPersistenceProvider#getDataSet(java.util.UUID)
82  	 */
83  	@SuppressWarnings("unchecked")
84  	@Override
85  	public <T extends IDataSet<? extends IElement>> T getDataSet(UUID id) {
86  		return (T)dsMap.get(id);
87  	}
88  
89  	/**
90  	 * {@inheritDoc}
91  	 *
92  	 * @see pl.edu.agh.cast.data.persistence.IPersistenceProvider#getDataSetDescriptor(java.util.UUID)
93  	 */
94  	@Override
95  	public DataSetDescriptor getDataSetDescriptor(UUID id) {
96  		IDataSet<? extends IElement> ds = dsMap.get(id);
97  		return ds == null ? null : ds.getDescriptor();
98  	}
99  
100 	/**
101 	 * {@inheritDoc}
102 	 *
103 	 * @see pl.edu.agh.cast.data.persistence.IPersistenceProvider#getDataSetDescriptors()
104 	 */
105 	@Override
106 	public List<DataSetDescriptor> getDataSetDescriptors() {
107 		return Collections.unmodifiableList(dsDescriptors);
108 	}
109 
110 	/**
111 	 * {@inheritDoc}
112 	 *
113 	 * @see pl.edu.agh.cast.data.persistence.IPersistenceProvider#saveDataSet(pl.edu.agh.cast.data.model.IDataSet)
114 	 */
115 	@Override
116 	public UUID saveDataSet(IDataSet<? extends IElement> dataSet) {
117 		IDataSet<? extends IElement> newDataSet = (IDataSet<? extends IElement>)copy(dataSet);
118 		dsMap.put(newDataSet.getId(), newDataSet);
119 		if (!dsDescriptors.contains(newDataSet.getDescriptor())) {
120 			dsDescriptors.add(newDataSet.getDescriptor());
121 		}
122 		return newDataSet.getId();
123 	}
124 
125 	/**
126 	 * Copies the given data set. For now a fake method.
127 	 *
128 	 * @param dataSet
129 	 *            data set to copy
130 	 * @return a new data set
131 	 */
132 	public static IDataSet<? extends IElement> copy(IDataSet<? extends IElement> dataSet) {
133 		return dataSet;
134 	}
135 
136 	/**
137 	 * {@inheritDoc}
138 	 *
139 	 * @see pl.edu.agh.cast.data.persistence.IPersistenceProvider#destroy()
140 	 */
141 	@Override
142 	public void destroy() {
143 	}
144 
145 	/**
146 	 * {@inheritDoc}
147 	 *
148 	 * @see pl.edu.agh.cast.data.persistence.IPersistenceProvider#initialize()
149 	 */
150 	@Override
151 	public void initialize() {
152 	}
153 
154 }