diff options
author | Simon Kaegi | 2008-11-10 19:27:24 +0000 |
---|---|---|
committer | Simon Kaegi | 2008-11-10 19:27:24 +0000 |
commit | 04e29098c0b244b86a9e71bdba81dd9a00b7491a (patch) | |
tree | 915000417fa1d206a29d0b456b70d2d9637351cb /bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java | |
parent | 669c6762ffbdffe4c1e42f67344c42a025a255fd (diff) | |
download | rt.equinox.p2-04e29098c0b244b86a9e71bdba81dd9a00b7491a.tar.gz rt.equinox.p2-04e29098c0b244b86a9e71bdba81dd9a00b7491a.tar.xz rt.equinox.p2-04e29098c0b244b86a9e71bdba81dd9a00b7491a.zip |
Bug 252685 [touchpoints] Cleanout redundant actions
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java')
-rw-r--r-- | bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java | 56 |
1 files changed, 52 insertions, 4 deletions
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java index 7373df20c..6e1059ecd 100644 --- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java +++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java @@ -10,17 +10,65 @@ *******************************************************************************/ package org.eclipse.equinox.internal.p2.touchpoint.natives.actions; -import java.util.Map; +import java.io.File; +import java.util.*; import org.eclipse.core.runtime.IStatus; -import org.eclipse.equinox.internal.p2.touchpoint.natives.NativeTouchpoint; +import org.eclipse.core.runtime.Status; +import org.eclipse.equinox.internal.p2.touchpoint.natives.Messages; +import org.eclipse.equinox.internal.p2.touchpoint.natives.Util; +import org.eclipse.equinox.internal.provisional.p2.engine.IProfile; import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningAction; +import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; +import org.eclipse.osgi.util.NLS; public class CleanupzipAction extends ProvisioningAction { + + public static final String ACTION_CLEANUPZIP = "cleanupzip"; //$NON-NLS-1$ + public IStatus execute(Map parameters) { - return NativeTouchpoint.cleanupzip(parameters); + return cleanupzip(parameters); } public IStatus undo(Map parameters) { - return NativeTouchpoint.unzip(parameters); + return UnzipAction.unzip(parameters); + } + + public static IStatus cleanupzip(Map parameters) { + String source = (String) parameters.get(ActionConstants.PARM_SOURCE); + if (source == null) + return Util.createError(NLS.bind(Messages.param_not_set, ActionConstants.PARM_SOURCE, ACTION_CLEANUPZIP)); + String target = (String) parameters.get(ActionConstants.PARM_TARGET); + if (target == null) + return Util.createError(NLS.bind(Messages.param_not_set, ActionConstants.PARM_TARGET, ACTION_CLEANUPZIP)); + + IInstallableUnit iu = (IInstallableUnit) parameters.get(ActionConstants.PARM_IU); + IProfile profile = (IProfile) parameters.get(ActionConstants.PARM_PROFILE); + + String unzipped = profile.getInstallableUnitProperty(iu, "unzipped" + ActionConstants.PIPE + source + ActionConstants.PIPE + target); //$NON-NLS-1$ + + if (unzipped == null) + return Status.OK_STATUS; + + StringTokenizer tokenizer = new StringTokenizer(unzipped, ActionConstants.PIPE); + List directories = new ArrayList(); + while (tokenizer.hasMoreTokens()) { + String fileName = tokenizer.nextToken(); + File file = new File(fileName); + if (!file.exists()) + continue; + + if (file.isDirectory()) + directories.add(file); + else + file.delete(); + } + + for (Iterator it = directories.iterator(); it.hasNext();) { + File directory = (File) it.next(); + directory.delete(); + } + + return Status.OK_STATUS; } + }
\ No newline at end of file |