]> git.uio.no Git - ifi-stolz-refaktor.git/blobdiff - case-study/jdt-after/ui/org/eclipse/jdt/internal/ui/text/correction/SerialVersionSubProcessor.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / ui / org / eclipse / jdt / internal / ui / text / correction / SerialVersionSubProcessor.java
diff --git a/case-study/jdt-after/ui/org/eclipse/jdt/internal/ui/text/correction/SerialVersionSubProcessor.java b/case-study/jdt-after/ui/org/eclipse/jdt/internal/ui/text/correction/SerialVersionSubProcessor.java
new file mode 100644 (file)
index 0000000..ebbd3cc
--- /dev/null
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2012 IBM Corporation 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.internal.ui.text.correction;
+
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
+import org.eclipse.jdt.internal.corext.fix.IProposableFix;
+import org.eclipse.jdt.internal.corext.fix.PotentialProgrammingProblemsFix;
+
+import org.eclipse.jdt.ui.cleanup.CleanUpOptions;
+import org.eclipse.jdt.ui.cleanup.ICleanUp;
+import org.eclipse.jdt.ui.text.java.IInvocationContext;
+import org.eclipse.jdt.ui.text.java.IProblemLocation;
+import org.eclipse.jdt.ui.text.java.correction.ICommandAccess;
+
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.internal.ui.fix.PotentialProgrammingProblemsCleanUp;
+import org.eclipse.jdt.internal.ui.text.correction.proposals.FixCorrectionProposal;
+
+/**
+ * Subprocessor for serial version quickfix proposals.
+ *
+ * @since 3.1
+ */
+public final class SerialVersionSubProcessor {
+
+       public static final class SerialVersionProposal extends FixCorrectionProposal {
+               private boolean fIsDefaultProposal;
+
+               public SerialVersionProposal(IProposableFix fix, int relevance, IInvocationContext context, boolean isDefault) {
+                       super(fix, createCleanUp(isDefault), relevance, JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_ADD), context);
+                       fIsDefaultProposal= isDefault;
+               }
+
+               private static ICleanUp createCleanUp(boolean isDefault) {
+                       Map<String, String> options= new Hashtable<String, String>();
+                       options.put(CleanUpConstants.ADD_MISSING_SERIAL_VERSION_ID, CleanUpOptions.TRUE);
+                       if (isDefault) {
+                               options.put(CleanUpConstants.ADD_MISSING_SERIAL_VERSION_ID_DEFAULT, CleanUpOptions.TRUE);
+                       } else {
+                               options.put(CleanUpConstants.ADD_MISSING_SERIAL_VERSION_ID_GENERATED, CleanUpOptions.TRUE);
+                       }
+                       return new PotentialProgrammingProblemsCleanUp(options);
+               }
+
+               public boolean isDefaultProposal() {
+                       return fIsDefaultProposal;
+               }
+
+               /**
+                * {@inheritDoc}
+                */
+               @Override
+               public Object getAdditionalProposalInfo(IProgressMonitor monitor) {
+                       if (fIsDefaultProposal) {
+                               return CorrectionMessages.SerialVersionDefaultProposal_message_default_info;
+                       } else {
+                               return CorrectionMessages.SerialVersionHashProposal_message_generated_info;
+                       }
+               }
+       }
+
+
+       /**
+        * Determines the serial version quickfix proposals.
+        *
+        * @param context
+        *        the invocation context
+        * @param location
+        *        the problem location
+        * @param proposals
+        *        the proposal collection to extend
+        */
+       public static final void getSerialVersionProposals(final IInvocationContext context, final IProblemLocation location, final Collection<ICommandAccess> proposals) {
+
+               Assert.isNotNull(context);
+               Assert.isNotNull(location);
+               Assert.isNotNull(proposals);
+
+               IProposableFix[] fixes= PotentialProgrammingProblemsFix.createMissingSerialVersionFixes(context.getASTRoot(), location);
+               if (fixes != null) {
+                       proposals.add(new SerialVersionProposal(fixes[0], 9, context, true));
+                       proposals.add(new SerialVersionProposal(fixes[1], 9, context, false));
+               }
+       }
+}