1 |
package appl.parallel.spmd; |
2 |
|
3 |
import java.io.Serializable; |
4 |
import java.rmi.RemoteException; |
5 |
import java.util.Vector; |
6 |
|
7 |
import appl.parallel.client.DataServer; |
8 |
import appl.parallel.data.PartitionDataHandler; |
9 |
import appl.parallel.server.PartitionDataServer; |
10 |
import appl.parallel.server.PartitionDataManager; |
11 |
import appl.parallel.spmd.split.DataPartition; |
12 |
import appl.parallel.spmd.split.PartitionInfo; |
13 |
import appl.parallel.spmd.split.SinglePartitionInfo; |
14 |
|
15 |
/** |
16 |
* A extension of the {@link MultiDataObject} for storing {@link DataPartition DataPartitions}. |
17 |
* |
18 |
* @author Dominik Appl |
19 |
*/ |
20 |
public class MultiDataPartitionObject extends MultiDataObject { |
21 |
|
22 |
private final PartitionDataServer partitionDataServer; |
23 |
private final MultiDataInfo info; |
24 |
|
25 |
public MultiDataPartitionObject(MultiDataInfo info, PartitionDataServer dataServer) { |
26 |
super(info, dataServer); |
27 |
this.info = info; |
28 |
partitionDataServer = dataServer; |
29 |
} |
30 |
|
31 |
/** |
32 |
* Adds an element to the PartitionObject as {@link MultiDataObject} does. Also |
33 |
* adds the needed {@link PartitionInfo} Object for the new Element |
34 |
* to the {@link PartitionDataServer}. |
35 |
* |
36 |
* @return the index of the last element |
37 |
*/ |
38 |
@Override |
39 |
public int addElement() { |
40 |
int lastIdx = super.addElement(); |
41 |
int newID = this.getMultiInfo().getMultiID(lastIdx); |
42 |
//get PartitionInfo of the first grid and duplicate it |
43 |
try { |
44 |
SinglePartitionInfo partitionInfo = (SinglePartitionInfo) partitionDataServer.getPartitionInfo(info.getMultiID(0)).clone(newID); |
45 |
//add the new PartitionInfo to the server |
46 |
Vector<SinglePartitionInfo> partitionVector = new Vector<SinglePartitionInfo>(); |
47 |
partitionVector.add(partitionInfo); |
48 |
partitionDataServer.addPartitionInfos(partitionVector); |
49 |
} catch (RemoteException e) { |
50 |
// TODO Auto-generated catch block |
51 |
e.printStackTrace(); |
52 |
} |
53 |
|
54 |
return lastIdx; |
55 |
} |
56 |
|
57 |
|
58 |
} |