From 04e29098c0b244b86a9e71bdba81dd9a00b7491a Mon Sep 17 00:00:00 2001 From: Simon Kaegi Date: Mon, 10 Nov 2008 19:27:24 +0000 Subject: Bug 252685 [touchpoints] Cleanout redundant actions --- .../natives/actions/CleanupzipAction.java | 56 ++++++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) (limited to 'bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java') 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 -- cgit v1.2.3