package com.mobilesorcery.sdk.profiles; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.TreeMap; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jface.resource.ImageDescriptor; import com.mobilesorcery.sdk.core.ProfileManager; import com.mobilesorcery.sdk.core.MoSyncTool; public class LegacyProfileManager extends ProfileManager { private final TreeMap<String, Vendor> vendors = new TreeMap<String, Vendor>( String.CASE_INSENSITIVE_ORDER); private final HashMap<String, List<IProfile>> profilesForRuntime = new HashMap<String, List<IProfile>>(); @Override public void init() { IPath vendorsPath = MoSyncTool.getDefault().getVendorsPath(); File[] directories = vendorsPath.toFile().listFiles(); for (int i = 0; i < directories.length; i++) { if (directories[i].isDirectory()) { Vendor vendor = initVendor(directories[i]); this.vendors.put(vendor.getName(), vendor); } } } static ImageDescriptor getIconForVendor(File vendorDir) { IPath iconPath = new Path(vendorDir.getAbsolutePath()).append("icon.png"); File iconFile = iconPath.toFile(); ImageDescriptor icon = null; try { if (iconFile.exists()) { icon = ImageDescriptor.createFromURL(iconFile.toURI().toURL()); } } catch (MalformedURLException e) { // Just ignore. } return icon; } private Vendor initVendor(File vendorDir) { ProfileParser parser = new ProfileParser(); String name = vendorDir.getName(); ImageDescriptor icon = getIconForVendor(MoSyncTool.getDefault().getVendorsPath().append(name).toFile()); Vendor vendor = new Vendor(name, icon); File[] profiles = vendorDir.listFiles(); for (int i = 0; i < profiles.length; i++) { if (profiles[i].isDirectory()) { String profileName = profiles[i].getName(); File profileInfoFile = new File(profiles[i], "maprofile.h"); File runtimeTxtFile = new File(profiles[i], "runtime.txt"); IProfile profile; try { profile = parser.parseInfoFile(vendor, profileName, profileInfoFile, runtimeTxtFile); vendor.addProfile(profile); String runtime = toCanonicalRuntime(profile.getRuntime()); List<IProfile> profilesForOneRuntime = profilesForRuntime.get(runtime); if (profilesForOneRuntime == null) { profilesForOneRuntime = new ArrayList<IProfile>(); profilesForRuntime.put(runtime, profilesForOneRuntime); } profilesForOneRuntime.add(profile); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return vendor; } @Override public IVendor[] getVendors() { return vendors.values().toArray(new IVendor[0]); } @Override public IVendor getVendor(String vendorName) { return vendors.get(vendorName); } @Override public List<IProfile> getProfilesForRuntime(String runtime) { return profilesForRuntime.get(toCanonicalRuntime(runtime)); } @Override public IProfile getDefaultTargetProfile() { IProfile result = MoSyncTool.getDefault() .getDefaultEmulatorProfile(); if (result == null) { result = super.getDefaultTargetProfile(); } return result; } }