blob: 986d253117ab08721005ed0a76009ec7fc34ba19 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2008 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.equinox.internal.p2.tools;
//import java.net.MalformedURLException;
//import java.net.URL;
//import java.util.*;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
public class MetadataCompareApplication implements IApplication {
// private String source;
// private String target;
// private boolean compare = false;
// private boolean list = false;
// private String type = "meta";
public Object start(IApplicationContext context) throws Exception {
// initializeFromArguments((String[]) context.getArguments().get("application.args"));
//
// if (compare)
// compareMetadataRepositories(new URL(source), new URL(target));
// if (list) {
// list(source);
// list(target);
// }
return IApplication.EXIT_OK;
}
// private void list(String sourceLocation) throws ProvisionException {
// if (sourceLocation == null)
// return;
// IQueryable source = null;
// if (type.equals("meta")) {
// URL location;
// try {
// location = new URL(sourceLocation);
// } catch (MalformedURLException e) {
// return;
// }
// ProvisioningHelper.addMetadataRepository(location);
// source = ProvisioningHelper.getMetadataRepository(location);
// if (source == null)
// return;
// } else if (type.equals("profile")) {
// source = ProvisioningHelper.getProfile(sourceLocation);
// if (source == null)
// return;
// }
// IInstallableUnit[] sourceIUs = source.query(null, null, null, false, null);
// sourceIUs = sort(sourceIUs, true);
// for (int i = 0; i < sourceIUs.length; i++) {
// System.out.print(sourceIUs[i]);
// System.out.println(sourceIUs[i].isFragment() ? " (fragment)" : "");
// }
// System.out.println("Total: " + sourceIUs.length);
// }
//
// private void compareMetadataRepositories(URL source, URL target) throws ProvisionException {
// ProvisioningHelper.addMetadataRepository(source);
// IMetadataRepository sourceRepo = ProvisioningHelper.getMetadataRepository(source);
// if (sourceRepo == null)
// return;
// ProvisioningHelper.addMetadataRepository(target);
// IMetadataRepository targetRepo = ProvisioningHelper.getMetadataRepository(target);
// if (targetRepo == null)
// return;
//
// System.out.println("\n" + source.toExternalForm() + " -> " + target.toExternalForm());
// compare(sourceRepo, targetRepo);
//
// System.out.println("\n" + target.toExternalForm() + " -> " + source.toExternalForm());
// compare(targetRepo, sourceRepo);
// }
//
// private void compare(IQueryable sourceRepo, IQueryable targetRepo) {
// IQueryable[] target = new IQueryable[] {targetRepo};
// IInstallableUnit[] ius = sourceRepo.query(null, null, null, false, null);
// ius = sort(ius, true);
// for (int i = 0; i < ius.length; i++) {
// IInstallableUnit iu = ius[i];
// Iterator result = Query.getIterator(target, iu.getId(), new VersionRange(iu.getVersion(), true, iu.getVersion(), true), null, false);
// if (!result.hasNext())
// System.out.println(iu);
// else {
// String comparison = compare(iu, (IInstallableUnit) result.next());
// if (comparison.length() > 0)
// System.out.println(iu + comparison);
// }
// }
// }
//
// private boolean compare(Object a, Object b) {
// if (a == null)
// return b == null;
// return a.equals(b);
// }
//
// private boolean compare(Object[] a, Object b[]) {
// if (a == null)
// return b == null;
// return Arrays.equals(a, b);
// }
//
// private String compare(IInstallableUnit iu, IInstallableUnit next) {
// String result = "";
// if (!iu.equals(next))
// result += " iu";
// if (!compare(iu.getApplicabilityFilter(), next.getApplicabilityFilter()))
// result += " applicabilityFilter";
// if (!compare(iu.getArtifacts(), next.getArtifacts()))
// result += " artifactLocators";
// if (!compare(iu.getProvidedCapabilities(), next.getProvidedCapabilities()))
// result += " providedCapabilities";
// if (!compareRequires(iu.getRequiredCapabilities(), next.getRequiredCapabilities()))
// result += " requiredCapabilities";
// if (!compare(iu.getTouchpointType(), next.getTouchpointType()))
// result += " touchpointType";
//
// if (iu.isFragment()) {
// if (((InstallableUnitFragment) iu).getHostId() == null || ((InstallableUnitFragment) iu).getHostVersionRange() == null)
// return result;
// if (!((InstallableUnitFragment) iu).getHostId().equals(((InstallableUnitFragment) next).getHostId()))
// result += " hostid";
// if (!((InstallableUnitFragment) iu).getHostVersionRange().equals(((InstallableUnitFragment) next).getHostVersionRange()))
// result += " hostversionRange";
// }
// return result;
// }
//
// private boolean compareRequires(RequiredCapability[] a, RequiredCapability[] b) {
// if (a == null)
// return b == null;
// if (a.length != b.length)
// return false;
// if (a == b)
// return true;
// for (int i = 0; i < a.length; i++)
// if (findCapability(a[i], b) == null)
// return false;
// return true;
// }
//
// private RequiredCapability findCapability(RequiredCapability target, RequiredCapability[] b) {
// for (int i = 0; i < b.length; i++) {
// RequiredCapability capability = b[i];
// if (target.equals(capability))
// return capability;
// }
// return null;
// }
//
// private IInstallableUnit[] sort(IInstallableUnit[] ius, boolean clone) {
// Comparator comparator = new Comparator() {
// public int compare(Object source, Object target) {
// IInstallableUnit sourceIU = (IInstallableUnit) source;
// IInstallableUnit targetIU = (IInstallableUnit) target;
// int id = sourceIU.getId().compareTo(targetIU.getId());
// if (id != 0)
// return id;
// int version = sourceIU.getVersion().compareTo(targetIU.getVersion());
// if (version != 0)
// return version;
// return 0;
// }
// };
// IInstallableUnit[] result = ius;
// if (clone) {
// result = new InstallableUnit[ius.length];
// System.arraycopy(ius, 0, result, 0, ius.length);
// }
// Arrays.sort(result, comparator);
// return result;
// }
//
// public void initializeFromArguments(String[] args) throws Exception {
// if (args == null)
// return;
// for (int i = 0; i < args.length; i++) {
// // check for args without parameters (i.e., a flag arg)
//
// // if (args[i].equalsIgnoreCase("-sort"))
// // sort = true;
//
// if (args[i].equalsIgnoreCase("-meta"))
// type = "meta";
//
// if (args[i].equalsIgnoreCase("-compare"))
// compare = true;
//
// if (args[i].equalsIgnoreCase("-profile"))
// type = "profile";
//
// if (args[i].equalsIgnoreCase("-list"))
// list = true;
//
// // check for args with parameters. If we are at the last argument or
// // if the next one
// // has a '-' as the first character, then we can't have an arg with
// // a parm so continue.
// if (i == args.length - 1 || args[i + 1].startsWith("-")) //$NON-NLS-1$
// continue;
//
// String arg = args[++i];
//
// if (args[i - 1].equalsIgnoreCase("-source"))
// source = arg;
// if (args[i - 1].equalsIgnoreCase("-target"))
// target = arg;
// }
// }
//
public void stop() {
}
}