blob: 775ab10c69fc2760f290884f199c061505651605 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
/*
* Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.emf.cdo.common.id;
import org.eclipse.emf.cdo.common.protocol.CDODataInput;
import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EStructuralFeature;
import java.io.IOException;
/**
* Represents a {@link CDOID} typed reference from one object to another object.
*
* @author Eike Stepper
* @since 4.0
* @noextend This interface is not intended to be extended by clients.
* @noinstantiate This class is not intended to be instantiated by clients.
* @apiviz.has {@link CDOID} oneway - - source
* @apiviz.has {@link CDOID} oneway - - target
*/
public class CDOIDReference implements CDOReference<CDOID>
{
private CDOID targetID;
private CDOID sourceID;
private EStructuralFeature sourceFeature;
private int sourceIndex;
public CDOIDReference(CDOID targetID, CDOID sourceID, EStructuralFeature sourceFeature, int sourceIndex)
{
this.targetID = targetID;
this.sourceID = sourceID;
this.sourceFeature = sourceFeature;
this.sourceIndex = sourceIndex;
}
public CDOIDReference(CDODataInput in) throws IOException
{
targetID = in.readCDOID();
sourceID = in.readCDOID();
EClass eClass = (EClass)in.readCDOClassifierRefAndResolve();
String featureName = in.readString();
sourceFeature = eClass.getEStructuralFeature(featureName);
sourceIndex = in.readInt();
}
public void write(CDODataOutput out) throws IOException
{
out.writeCDOID(targetID);
out.writeCDOID(sourceID);
out.writeCDOClassifierRef(sourceFeature.getEContainingClass());
out.writeString(sourceFeature.getName());
out.writeInt(sourceIndex);
}
public CDOID getTargetObject()
{
return targetID;
}
public CDOID getSourceObject()
{
return sourceID;
}
public EStructuralFeature getSourceFeature()
{
return sourceFeature;
}
public int getSourceIndex()
{
return sourceIndex;
}
@Override
public String toString()
{
StringBuilder builder = new StringBuilder();
builder.append(sourceID);
builder.append(".");
builder.append(sourceFeature.getName());
if (sourceIndex != NO_INDEX)
{
builder.append("[");
builder.append(sourceIndex);
builder.append("]");
}
builder.append(" --> ");
builder.append(targetID);
return builder.toString();
}
}
|