/projects/eclipse_SDK-3.7.1/plugins/org.eclipse.pde.ds.core.source_1.0.100.v20100601/org/eclipse/pde/internal/ds/core/text/DSComponent.java

https://gitlab.com/essere.lab.public/qualitas.class-corpus · Java · 368 lines · 164 code · 45 blank · 159 comment · 20 complexity · b59a144bebb8532ac3f3b972561668ce MD5 · raw file

  1. /*******************************************************************************
  2. * Copyright (c) 2008, 2009 IBM Corporation and others.
  3. * All rights reserved. This program and the accompanying materials
  4. * are made available under the terms of the Eclipse Public License v1.0
  5. * which accompanies this distribution, and is available at
  6. * http://www.eclipse.org/legal/epl-v10.html
  7. *
  8. * Contributors:
  9. * IBM Corporation - initial API and implementation
  10. * Rafael Oliveira Nobrega <rafael.oliveira@gmail.com> - bug 223738
  11. * EclipseSource Corporation - ongoing enhancements
  12. *******************************************************************************/
  13. package org.eclipse.pde.internal.ds.core.text;
  14. import java.util.ArrayList;
  15. import org.eclipse.pde.internal.ds.core.IDSComponent;
  16. import org.eclipse.pde.internal.ds.core.IDSConstants;
  17. import org.eclipse.pde.internal.ds.core.IDSImplementation;
  18. import org.eclipse.pde.internal.ds.core.IDSProperties;
  19. import org.eclipse.pde.internal.ds.core.IDSProperty;
  20. import org.eclipse.pde.internal.ds.core.IDSReference;
  21. import org.eclipse.pde.internal.ds.core.IDSService;
  22. /**
  23. * Represents the root "component" entry in a DS xml file. There may be only one
  24. * root node in the file and all other nodes must be inside the root. The
  25. * structure of component XML grammar is:
  26. *
  27. * <component> ::= <implementation> <properties> * <service> ? <reference> *
  28. *
  29. * @since 3.4
  30. * @see DSObject
  31. * @see DSModel
  32. * @see DSDocumentFactory
  33. */
  34. public class DSComponent extends DSObject implements IDSComponent {
  35. private static final long serialVersionUID = 1L;
  36. public DSComponent(DSModel model) {
  37. super(model, ELEMENT_COMPONENT);
  38. setAttributeName(IDSConstants.ELEMENT_COMPONENT);
  39. setNamespace(IDSConstants.NAMESPACE); // hard code namespace to be 1.1
  40. setNamespacePrefix("scr"); //$NON-NLS-1$
  41. setInTheModel(true);
  42. }
  43. public boolean isRoot() {
  44. return true;
  45. }
  46. /*
  47. * (non-Javadoc)
  48. *
  49. * @see org.eclipse.pde.internal.ds.core.text.IDSObject#getType()
  50. */
  51. public int getType() {
  52. return TYPE_COMPONENT;
  53. }
  54. /*
  55. * (non-Javadoc)
  56. *
  57. * @see org.eclipse.pde.internal.ds.core.text.IDSObject#canBeParent()
  58. */
  59. public boolean canBeParent() {
  60. return true;
  61. }
  62. /*
  63. * (non-Javadoc)
  64. *
  65. * @see org.eclipse.pde.internal.ds.core.text.IDSObject#getName()
  66. */
  67. public String getName() {
  68. return this.getAttributeName();
  69. }
  70. /*
  71. * (non-Javadoc)
  72. *
  73. * @see org.eclipse.pde.internal.ds.core.text.DSObject#canAddChild(int)
  74. */
  75. public boolean canAddChild(int objectType) {
  76. return objectType == TYPE_IMPLEMENTATION
  77. || objectType == TYPE_PROPERTIES || objectType == TYPE_PROPERTY
  78. || objectType == TYPE_SERVICE || objectType == TYPE_REFERENCE;
  79. }
  80. /*
  81. * (non-Javadoc)
  82. *
  83. * @see org.eclipse.pde.internal.ds.core.text.IDSComponent#setAttributeName(java.lang.String)
  84. */
  85. public void setAttributeName(String name) {
  86. setXMLAttribute(ATTRIBUTE_COMPONENT_NAME, name);
  87. }
  88. /*
  89. * (non-Javadoc)
  90. *
  91. * @see org.eclipse.pde.internal.ds.core.text.IDSComponent#getAttributeName()
  92. */
  93. public String getAttributeName() {
  94. return getXMLAttributeValue(ATTRIBUTE_COMPONENT_NAME);
  95. }
  96. /*
  97. * (non-Javadoc)
  98. *
  99. * @see org.eclipse.pde.internal.ds.core.text.IDSComponent#setEnabled(boolean)
  100. */
  101. public void setEnabled(boolean bool) {
  102. setBooleanAttributeValue(ATTRIBUTE_COMPONENT_ENABLED, bool);
  103. }
  104. /*
  105. * (non-Javadoc)
  106. *
  107. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#getEnabled()
  108. */
  109. public boolean getEnabled() {
  110. return getBooleanAttributeValue(ATTRIBUTE_COMPONENT_ENABLED, true);
  111. }
  112. /*
  113. * (non-Javadoc)
  114. *
  115. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#setFactory(java.lang.String)
  116. */
  117. public void setFactory(String factory) {
  118. setXMLAttribute(ATTRIBUTE_COMPONENT_FACTORY, factory);
  119. }
  120. /*
  121. * (non-Javadoc)
  122. *
  123. * @see org.eclipse.pde.internal.ds.core.text.IDSComponent#getFactory()
  124. */
  125. public String getFactory() {
  126. return getXMLAttributeValue(ATTRIBUTE_COMPONENT_FACTORY);
  127. }
  128. /*
  129. * (non-Javadoc)
  130. *
  131. * @see org.eclipse.pde.internal.ds.core.text.IDSComponent#setImmediate(boolean)
  132. */
  133. public void setImmediate(boolean bool) {
  134. setBooleanAttributeValue(ATTRIBUTE_COMPONENT_IMMEDIATE, bool);
  135. }
  136. /*
  137. * (non-Javadoc)
  138. *
  139. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#getImmediate()
  140. */
  141. public boolean getImmediate() {
  142. return getBooleanAttributeValue(ATTRIBUTE_COMPONENT_IMMEDIATE, false);
  143. }
  144. /*
  145. * (non-Javadoc)
  146. *
  147. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#getImplemention()
  148. */
  149. public IDSImplementation getImplementation() {
  150. ArrayList childNodesList = getChildNodesList(IDSImplementation.class,
  151. true);
  152. if (childNodesList.size() == 0) {
  153. return null;
  154. }
  155. return (IDSImplementation) childNodesList.get(0);
  156. }
  157. /*
  158. * (non-Javadoc)
  159. *
  160. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#getPropertiesElements()
  161. */
  162. public IDSProperties[] getPropertiesElements() {
  163. ArrayList childNodesList = getChildNodesList(IDSProperties.class, true);
  164. IDSProperties[] array = new IDSProperties[childNodesList.size()];
  165. for (int i = 0; i < childNodesList.size(); i++) {
  166. array[i] = (IDSProperties) childNodesList.get(i);
  167. }
  168. return array;
  169. }
  170. /*
  171. * (non-Javadoc)
  172. *
  173. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#getPropertyElements()
  174. */
  175. public IDSProperty[] getPropertyElements() {
  176. ArrayList childNodesList = getChildNodesList(IDSProperty.class, true);
  177. IDSProperty[] array = new IDSProperty[childNodesList.size()];
  178. for (int i = 0; i < childNodesList.size(); i++) {
  179. array[i] = (IDSProperty) childNodesList.get(i);
  180. }
  181. return array;
  182. }
  183. /*
  184. * (non-Javadoc)
  185. *
  186. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#getReferences()
  187. */
  188. public IDSReference[] getReferences() {
  189. ArrayList childNodesList = getChildNodesList(IDSReference.class, true);
  190. IDSReference[] array = new IDSReference[childNodesList.size()];
  191. for (int i = 0; i < childNodesList.size(); i++) {
  192. array[i] = (IDSReference) childNodesList.get(i);
  193. }
  194. return array;
  195. }
  196. /*
  197. * (non-Javadoc)
  198. *
  199. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#getService()
  200. */
  201. public IDSService getService() {
  202. ArrayList childNodesList = getChildNodesList(IDSService.class, true);
  203. if (childNodesList.size() == 0) {
  204. return null;
  205. }
  206. return (IDSService) childNodesList.get(0);
  207. }
  208. /*
  209. * (non-Javadoc)
  210. *
  211. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#addPropertiesElement(org.eclipse.pde.internal.ds.core.IDSProperties)
  212. */
  213. public void addPropertiesElement(IDSProperties properties) {
  214. this.addChildNode(properties, true);
  215. }
  216. /*
  217. * (non-Javadoc)
  218. *
  219. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#addPropertyElement(org.eclipse.pde.internal.ds.core.IDSProperty)
  220. */
  221. public void addPropertyElement(IDSProperty property) {
  222. this.addChildNode(property, true);
  223. }
  224. /*
  225. * (non-Javadoc)
  226. *
  227. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#addReference(org.eclipse.pde.internal.ds.core.IDSReference)
  228. */
  229. public void addReference(IDSReference reference) {
  230. this.addChildNode(reference, true);
  231. }
  232. /*
  233. * (non-Javadoc)
  234. *
  235. * @see org.eclipse.pde.internal.ds.core.text.IDSRoot#removePropertiesElement(org.eclipse.pde.internal.ds.core.IDSProperties)
  236. */
  237. public void removePropertiesElement(IDSProperties properties) {
  238. this.removeChildNode(properties, true);
  239. }
  240. /*
  241. * (non-Javadoc)
  242. *
  243. * @see org.eclipse.pde.internal.ds.core.text.IDSComponent#removePropertyElement(org.eclipse.pde.internal.ds.core.IDSProperty)
  244. */
  245. public void removePropertyElement(IDSProperty property) {
  246. this.removeChildNode(property, true);
  247. }
  248. /*
  249. * (non-Javadoc)
  250. *
  251. * @see org.eclipse.pde.internal.ds.core.text.IDSComponent#removeReference(org.eclipse.pde.internal.ds.core.IDSReference)
  252. */
  253. public void removeReference(IDSReference reference) {
  254. this.removeChildNode(reference, true);
  255. }
  256. /*
  257. * (non-Javadoc)
  258. *
  259. * @see org.eclipse.pde.internal.ds.core.text.IDSComponent#setImplementation(org.eclipse.pde.internal.ds.core.IDSImplementation)
  260. */
  261. public void setImplementation(IDSImplementation implementation) {
  262. if (this.getImplementation() == null) {
  263. this.addChildNode(implementation, true);
  264. }
  265. }
  266. /*
  267. * (non-Javadoc)
  268. *
  269. * @see org.eclipse.pde.internal.ds.core.text.IDSComponent#setService(org.eclipse.pde.internal.ds.core.IDSService)
  270. */
  271. public void setService(IDSService service) {
  272. if (this.getService() == null) {
  273. this.addChildNode(service, true);
  274. }
  275. }
  276. /*
  277. * (non-Javadoc)
  278. *
  279. * @see org.eclipse.pde.internal.ds.core.text.IDSComponent#removeService(org.eclipse.pde.internal.ds.core.IDSService)
  280. */
  281. public void removeService(IDSService service) {
  282. this.removeChildNode(service, true);
  283. }
  284. /*
  285. * (non-Javadoc)
  286. *
  287. * @see org.eclipse.pde.internal.ds.core.IDSObject#getAttributesNames()
  288. */
  289. public String[] getAttributesNames() {
  290. return new String[] { IDSConstants.ATTRIBUTE_COMPONENT_ENABLED,
  291. IDSConstants.ATTRIBUTE_COMPONENT_FACTORY,
  292. IDSConstants.ATTRIBUTE_COMPONENT_IMMEDIATE,
  293. IDSConstants.ATTRIBUTE_COMPONENT_NAME,
  294. IDSConstants.ATTRIBUTE_COMPONENT_CONFIGURATION_POLICY,
  295. IDSConstants.ATTRIBUTE_COMPONENT_ACTIVATE,
  296. IDSConstants.ATTRIBUTE_COMPONENT_DEACTIVATE,
  297. IDSConstants.ATTRIBUTE_COMPONENT_MODIFIED };
  298. }
  299. public String getConfigurationPolicy() {
  300. return getXMLAttributeValue(ATTRIBUTE_COMPONENT_CONFIGURATION_POLICY);
  301. }
  302. public void setConfigurationPolicy(String policy) {
  303. setXMLAttribute(ATTRIBUTE_COMPONENT_CONFIGURATION_POLICY, policy);
  304. }
  305. public String getActivateMethod() {
  306. return getXMLAttributeValue(ATTRIBUTE_COMPONENT_ACTIVATE);
  307. }
  308. public String getDeactivateMethod() {
  309. return getXMLAttributeValue(ATTRIBUTE_COMPONENT_DEACTIVATE);
  310. }
  311. public void setActivateMethod(String name) {
  312. setXMLAttribute(ATTRIBUTE_COMPONENT_ACTIVATE, name);
  313. }
  314. public void setDeactivateMethod(String name) {
  315. setXMLAttribute(ATTRIBUTE_COMPONENT_DEACTIVATE, name);
  316. }
  317. public String getModifiedMethod() {
  318. return getXMLAttributeValue(ATTRIBUTE_COMPONENT_MODIFIED);
  319. }
  320. public void setModifiedeMethod(String name) {
  321. setXMLAttribute(ATTRIBUTE_COMPONENT_MODIFIED, name);
  322. }
  323. }