Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/AddLicensePomOperation.java')
-rw-r--r--org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/AddLicensePomOperation.java104
1 files changed, 104 insertions, 0 deletions
diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/AddLicensePomOperation.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/AddLicensePomOperation.java
new file mode 100644
index 00000000..ccbb7c27
--- /dev/null
+++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/AddLicensePomOperation.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Sonatype, Inc.
+ * 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:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.m2e.editor.xml;
+
+import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.createElement;
+import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.format;
+import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.getChild;
+import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.insertAt;
+import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.setText;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import org.eclipse.jface.text.Region;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+
+import org.eclipse.m2e.core.ui.internal.editing.PomEdits.Operation;
+import org.eclipse.m2e.editor.xml.internal.dialogs.SPDXLicense;
+
+
+@SuppressWarnings("restriction")
+public class AddLicensePomOperation implements Operation {
+
+ private final SPDXLicense license;
+
+ private final PomTemplateContext context;
+
+ private final Region region;
+
+ private int generatedOffset = -1;
+
+ private int generatedLength = -1;
+
+ public AddLicensePomOperation(SPDXLicense license, PomTemplateContext context, Region region) {
+ if(license == null) {
+ throw new NullPointerException();
+ }
+ if(context != PomTemplateContext.PROJECT && context != PomTemplateContext.LICENSES) {
+ throw new IllegalArgumentException();
+ }
+ if(context == PomTemplateContext.LICENSES && region == null) {
+ throw new IllegalArgumentException();
+ }
+
+ this.license = license;
+ this.context = context;
+ this.region = region;
+ }
+
+ public void process(Document doc) {
+ Element element;
+ if(context == PomTemplateContext.PROJECT) {
+ element = createLicenses(doc);
+ } else {
+ element = createLicense(doc);
+ }
+ format(element);
+
+ if(element instanceof IndexedRegion) {
+ generatedOffset = ((IndexedRegion) element).getStartOffset();
+ generatedLength = ((IndexedRegion) element).getEndOffset() - generatedOffset;
+ }
+ }
+
+ private Element createLicenses(Document doc) {
+ Element licensesDom;
+ if(region != null) {
+ licensesDom = insertAt(doc.createElement("licenses"), region.getOffset());
+ } else {
+ licensesDom = getChild(doc.getDocumentElement(), "licenses");
+ }
+
+ setLicense(createElement(licensesDom, "license"));
+
+ return licensesDom;
+ }
+
+ private Element createLicense(Document doc) {
+ Element licenseDom = insertAt(doc.createElement("license"), region.getOffset());
+
+ setLicense(licenseDom);
+
+ return licenseDom;
+ }
+
+ void setLicense(Element licenseDom) {
+ setText(getChild(licenseDom, "name"), license.getName());
+ setText(getChild(licenseDom, "url"), license.getURL());
+ }
+
+ public Point getSelection() {
+ return new Point(generatedOffset, generatedLength);
+ }
+}

Back to the top