Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 189030
Collapse All | Expand All

(-)src/org/eclipse/hyades/resources/database/internal/impl/DBHyadesResourceExtension.java (+11 lines)
Lines 47-52 Link Here
47
import org.eclipse.hyades.models.hierarchy.extensions.Query;
47
import org.eclipse.hyades.models.hierarchy.extensions.Query;
48
import org.eclipse.hyades.models.hierarchy.extensions.QueryResult;
48
import org.eclipse.hyades.models.hierarchy.extensions.QueryResult;
49
import org.eclipse.hyades.models.hierarchy.extensions.ResultEntry;
49
import org.eclipse.hyades.models.hierarchy.extensions.ResultEntry;
50
import org.eclipse.hyades.models.hierarchy.extensions.SimpleOperand;
50
import org.eclipse.hyades.models.hierarchy.extensions.SimpleSearchQuery;
51
import org.eclipse.hyades.models.hierarchy.extensions.SimpleSearchQuery;
51
import org.eclipse.hyades.models.hierarchy.util.IHyadesExtendedResource;
52
import org.eclipse.hyades.models.hierarchy.util.IHyadesExtendedResource;
52
import org.eclipse.hyades.models.hierarchy.util.IHyadesResourceExtension;
53
import org.eclipse.hyades.models.hierarchy.util.IHyadesResourceExtension;
Lines 529-534 Link Here
529
			statement.append("))");
530
			statement.append("))");
530
		}
531
		}
531
	}
532
	}
533
	
534
	public static EObject getOperandType(SimpleOperand oe)
535
	{
536
		if (oe.getFeature() != null) {
537
			return oe.getFeature();
538
		} else if (oe.getType() != null) {
539
			return oe.getType();
540
		}
541
		return null;
542
	}
532
	public Object executeQuery(String queryString,String targetResourceURI, int mode,Properties p) {
543
	public Object executeQuery(String queryString,String targetResourceURI, int mode,Properties p) {
533
			try {
544
			try {
534
				Database database = getDatabase(LoadersUtils.getPostfix(targetResourceURI), p);
545
				Database database = getDatabase(LoadersUtils.getPostfix(targetResourceURI), p);
(-)src/org/eclipse/hyades/resources/database/internal/impl/DBSimpleSearchCommand.java (-4 / +28 lines)
Lines 20-25 Link Here
20
20
21
import org.eclipse.emf.common.util.BasicEList;
21
import org.eclipse.emf.common.util.BasicEList;
22
import org.eclipse.emf.common.util.EList;
22
import org.eclipse.emf.common.util.EList;
23
import org.eclipse.emf.ecore.EObject;
23
import org.eclipse.emf.ecore.resource.Resource;
24
import org.eclipse.emf.ecore.resource.Resource;
24
import org.eclipse.emf.ecore.resource.ResourceSet;
25
import org.eclipse.emf.ecore.resource.ResourceSet;
25
import org.eclipse.emf.ecore.util.EcoreUtil;
26
import org.eclipse.emf.ecore.util.EcoreUtil;
Lines 43-48 Link Here
43
44
44
/**
45
/**
45
 * @author apnan, Created on Jun 10, 2005
46
 * @author apnan, Created on Jun 10, 2005
47
 * @author slavescu
46
 *
48
 *
47
 */
49
 */
48
public class DBSimpleSearchCommand extends DBCommand {
50
public class DBSimpleSearchCommand extends DBCommand {
Lines 67-73 Link Here
67
	 * @see org.eclipse.hyades.resources.database.internal.impl.DBCommand#execute()
69
	 * @see org.eclipse.hyades.resources.database.internal.impl.DBCommand#execute()
68
	 */
70
	 */
69
	public Object execute() throws Exception {
71
	public Object execute() throws Exception {
70
		SQLStatement ssqs = createSimpleSearchQueryStatement(helper, dbMap, query);
72
		SQLStatement ssqs;
73
		boolean cbeRelated = isCBERelated(query);
74
		if(cbeRelated)
75
			ssqs = createSimpleSearchQueryStatementForCBE(helper, dbMap, query);
76
		else
77
			ssqs = new SimpleSearchQueryStatement(helper,dbMap,query);
78
			
71
		String s = ssqs.getStatement();
79
		String s = ssqs.getStatement();
72
		QueryResult queryResult = ExtensionsFactory.eINSTANCE.createQueryResult();
80
		QueryResult queryResult = ExtensionsFactory.eINSTANCE.createQueryResult();
73
		queryResult.setQuery(query);
81
		queryResult.setQuery(query);
Lines 75-82 Link Here
75
		PerfUtil p = PerfUtil.createInstance("SimpleSearchCommand.execute() 1 statement="+s,true);
83
		PerfUtil p = PerfUtil.createInstance("SimpleSearchCommand.execute() 1 statement="+s,true);
76
		try {
84
		try {
77
			if(!query.isCount()){	
85
			if(!query.isCount()){	
78
				updateParams();
86
				if(cbeRelated){
79
				helper.commitTransaction();
87
					updateParams();
88
					helper.commitTransaction();
89
				}
80
			}			
90
			}			
81
			helper.executeQuery(st, s);
91
			helper.executeQuery(st, s);
82
		} catch (Exception e) {
92
		} catch (Exception e) {
Lines 108-120 Link Here
108
		return queryResult;
118
		return queryResult;
109
	}
119
	}
110
	
120
	
121
	protected boolean isCBERelated(SimpleSearchQuery query2) {
122
		for (Iterator iterator = query.getOutputElements().iterator(); iterator.hasNext();) {
123
			SimpleOperand name = (SimpleOperand) iterator.next();
124
			EObject eo = DBHyadesResourceExtension.getOperandType(name);
125
			while(eo!=null)
126
			{
127
				if(eo.eContainer()==CBEPackage.eINSTANCE)
128
					return true;
129
				eo = eo.eContainer();
130
			}
131
		}
132
		return false;
133
	}
134
111
	/**
135
	/**
112
	 * @param helper
136
	 * @param helper
113
	 * @param dbMap
137
	 * @param dbMap
114
	 * @param query2
138
	 * @param query2
115
	 * @return
139
	 * @return
116
	 */
140
	 */
117
	protected SQLStatement createSimpleSearchQueryStatement(JDBCHelper helper1, DBMap dbMap1, SimpleSearchQuery query2) {
141
	protected SQLStatement createSimpleSearchQueryStatementForCBE(JDBCHelper helper1, DBMap dbMap1, SimpleSearchQuery query2) {
118
		return new SimpleSearchQueryStatement(helper1,dbMap1,query2){
142
		return new SimpleSearchQueryStatement(helper1,dbMap1,query2){
119
			/* (non-Javadoc)
143
			/* (non-Javadoc)
120
			 * @see org.eclipse.hyades.resources.database.internal.impl.SimpleSearchQueryStatement#processOutputElementsInSelectFrom()
144
			 * @see org.eclipse.hyades.resources.database.internal.impl.SimpleSearchQueryStatement#processOutputElementsInSelectFrom()
(-)src/org/eclipse/hyades/resources/database/internal/impl/IndirectedList.java (-16 / +22 lines)
Lines 122-128 Link Here
122
		if(currentPage==null || currentPage.size()==0 || !(eStructuralFeature instanceof EReference))
122
		if(currentPage==null || currentPage.size()==0 || !(eStructuralFeature instanceof EReference))
123
			return;
123
			return;
124
		IdsTypes idsTypes = new IdsTypes();
124
		IdsTypes idsTypes = new IdsTypes();
125
		for (int i = 0,length = currentPage.size(); i < length; i++) {
125
 loop1: for (int i = 0,length = currentPage.size(); i < length; i++) {
126
			Object o = currentPage.get(i);
126
			Object o = currentPage.get(i);
127
			if(o!=null && o instanceof EObject)
127
			if(o!=null && o instanceof EObject)
128
			{
128
			{
Lines 133-157 Link Here
133
				if(id!=null)
133
				if(id!=null)
134
				{
134
				{
135
					String p_p = cache.getP_P(id);
135
					String p_p = cache.getP_P(id);
136
					int preSlashIndex = p_p.lastIndexOf('/',p_p.length()-2);
136
					String[] containersIds = p_p.split("\\/");
137
					
137
					if(containersIds.length==0)
138
					String sContainerId = p_p.substring(preSlashIndex>0?preSlashIndex:0,p_p.length()-1);
139
					int cId = Integer.parseInt(sContainerId);
140
					if(idsTypes.getIds().indexOf(cId, 0)!=-1)
141
						continue;
138
						continue;
139
					for (int j = containersIds.length-1; j >=0; j--) {
140
						String sContainerId = containersIds[containersIds.length-1];
141
						
142
						int cId = Integer.parseInt(sContainerId);
143
						if(idsTypes.getIds().indexOf(cId, 0)!=-1)
144
							continue loop1;
142
145
143
					Integer containerId = new Integer(cId);
146
						Integer containerId = new Integer(cId);
144
					InternalEObject container = (InternalEObject)cache.getObject(containerId);
147
						InternalEObject container = (InternalEObject)cache.getObject(containerId);
145
					if(container!=null)
148
						if(container!=null)
146
					{
149
						{
150
							
151
							eObject.eBasicSetContainer(container,0, (NotificationChain)null);
152
							continue loop1;
153
						}
147
						
154
						
148
						eObject.eBasicSetContainer(container,0, (NotificationChain)null);
155
						int type = findContainerType((EObject)o);
149
						continue;
156
						if(type==-1)
157
							continue loop1;
158
						
159
						idsTypes.add(Integer.parseInt(sContainerId), (short)type);
150
					}
160
					}
151
					
152
					int type = findContainerType((EObject)o);
153
					
154
					idsTypes.add(Integer.parseInt(sContainerId), (short)type);
155
				}
161
				}
156
			}
162
			}
157
		}
163
		}
(-)src/org/eclipse/hyades/resources/database/internal/impl/SimpleSearchQueryStatement.java (-7 / +8 lines)
Lines 16-23 Link Here
16
import java.util.Map;
16
import java.util.Map;
17
import java.util.Set;
17
import java.util.Set;
18
18
19
import org.eclipse.emf.common.util.Enumerator;
19
import org.eclipse.emf.ecore.EAttribute;
20
import org.eclipse.emf.ecore.EAttribute;
20
import org.eclipse.emf.ecore.EClass;
21
import org.eclipse.emf.ecore.EClass;
22
import org.eclipse.emf.ecore.EEnum;
21
import org.eclipse.emf.ecore.EModelElement;
23
import org.eclipse.emf.ecore.EModelElement;
22
import org.eclipse.emf.ecore.EObject;
24
import org.eclipse.emf.ecore.EObject;
23
import org.eclipse.emf.ecore.EStructuralFeature;
25
import org.eclipse.emf.ecore.EStructuralFeature;
Lines 198-204 Link Here
198
					getInternalBuffer().append("'");
200
					getInternalBuffer().append("'");
199
					getInternalBuffer().append(((Boolean) v).booleanValue() ? '1' : '0');
201
					getInternalBuffer().append(((Boolean) v).booleanValue() ? '1' : '0');
200
					getInternalBuffer().append("'");
202
					getInternalBuffer().append("'");
201
				} else
203
				} else if(v instanceof Enumerator) {
204
					getInternalBuffer().append("'");
205
					getInternalBuffer().append(v);
206
					getInternalBuffer().append("'");
207
				}else
202
					getInternalBuffer().append(v);
208
					getInternalBuffer().append(v);
203
			}
209
			}
204
		}
210
		}
Lines 574-585 Link Here
574
	}
580
	}
575
581
576
	protected EObject getOperandType(SimpleOperand oe) {
582
	protected EObject getOperandType(SimpleOperand oe) {
577
		if (oe.getFeature() != null) {
583
		return DBHyadesResourceExtension.getOperandType(oe);
578
			return oe.getFeature();
579
		} else if (oe.getType() != null) {
580
			return oe.getType();
581
		}
582
		return null;
583
	}
584
	}
584
585
585
	/*
586
	/*
(-)src/org/eclipse/hyades/test/ui/UiPlugin.java (+9 lines)
Lines 32-37 Link Here
32
import org.eclipse.hyades.models.common.common.CMNNamedElement;
32
import org.eclipse.hyades.models.common.common.CMNNamedElement;
33
import org.eclipse.hyades.models.common.testprofile.TPFExecutionEvent;
33
import org.eclipse.hyades.models.common.testprofile.TPFExecutionEvent;
34
import org.eclipse.hyades.models.common.util.ICommonConstants;
34
import org.eclipse.hyades.models.common.util.ICommonConstants;
35
import org.eclipse.hyades.models.hierarchy.util.HyadesExtendedResourceFactory;
36
import org.eclipse.hyades.models.util.ModelDebugger;
35
import org.eclipse.hyades.test.core.TestCorePlugin;
37
import org.eclipse.hyades.test.core.TestCorePlugin;
36
import org.eclipse.hyades.test.core.TestCorePreferences;
38
import org.eclipse.hyades.test.core.TestCorePreferences;
37
import org.eclipse.hyades.test.core.testgen.TestGeneratorFactory;
39
import org.eclipse.hyades.test.core.testgen.TestGeneratorFactory;
Lines 269-274 Link Here
269
		
271
		
270
		Platform.getAdapterManager().registerAdapters(TestAdapterFactory.INSTANCE, IExtendedProxyNode.class);
272
		Platform.getAdapterManager().registerAdapters(TestAdapterFactory.INSTANCE, IExtendedProxyNode.class);
271
273
274
		if(ModelDebugger.INSTANCE.debugDatabaseResourcePostfix!=null && ModelDebugger.INSTANCE.debugDatabaseResourcePostfix.length()>0)
275
		{
276
			//add support for RDB backed execution resources
277
			Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("executiondb", new HyadesExtendedResourceFactory());//$NON-NLS-1$
278
		}
279
280
272
		super.start(context);
281
		super.start(context);
273
282
274
		Runnable operation = new Runnable() {
283
		Runnable operation = new Runnable() {

Return to bug 189030