/* Copyright (C) 2009 Mobile Sorcery AB This program is free software; you can redistribute it and/or modify it under the terms of the Eclipse Public License v1.0. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Eclipse Public License v1.0 for more details. You should have received a copy of the Eclipse Public License v1.0 along with this program. It is also available at http://www.eclipse.org/legal/epl-v10.html */ package com.mobilesorcery.sdk.builder.s60; import java.util.Random; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.jface.preference.IPreferenceStore; import com.mobilesorcery.sdk.core.IPropertyInitializerDelegate; import com.mobilesorcery.sdk.core.IPropertyOwner; import com.mobilesorcery.sdk.core.MoSyncProject; import com.mobilesorcery.sdk.core.PropertyUtil; import com.mobilesorcery.sdk.core.Util; /** * A shared preference/property initializer * @author Mattias Bybro * */ public class PropertyInitializer extends AbstractPreferenceInitializer implements IPropertyInitializerDelegate { private static final String PREFIX = "symbian.uids:"; //$NON-NLS-1$ private static final String UID_PREFIX = PREFIX + "uid."; //$NON-NLS-1$ public static final String S60V2_UID = UID_PREFIX + "s60v2uid"; //$NON-NLS-1$ public static final String S60V3_UID = UID_PREFIX + "s60v3uid"; //$NON-NLS-1$ public static final String S60_KEY_FILE = PREFIX + "key.file"; //$NON-NLS-1$ public static final String S60_CERT_FILE = PREFIX + "cert.file"; //$NON-NLS-1$ public static final String S60_PASS_KEY = PREFIX + "pass.key"; //$NON-NLS-1$ public static final String S60_PROJECT_SPECIFIC_KEYS = PREFIX + "proj.spec.keys"; //$NON-NLS-1$ private static Random rnd = new Random(System.currentTimeMillis()); public PropertyInitializer() { } @Override public String getDefaultValue(IPropertyOwner p, String key) { if (key.startsWith(UID_PREFIX)) { String value = generateUID(key); // We'll actually set the value. p.initProperty(key, value); return value; } else if (key.equals(S60_PROJECT_SPECIFIC_KEYS)) { return PropertyUtil.fromBoolean(false); } else if (key.equals(S60_KEY_FILE) || key.equals(S60_CERT_FILE) || key.equals(S60_PASS_KEY)) { return Activator.getDefault().getPreferenceStore().getString(key); } return null; } public static String generateUID(String property) { long startRange = getStartOfRange(property); String uid = Long.toHexString(startRange + rnd.nextInt(getLengthOfRange(property))); uid = Util.fill('0', 8 - uid.length()) + uid; return "0x" + uid; //$NON-NLS-1$ } public static long getStartOfRange(String property) { return S60V3_UID == property ? 0xE0000000L : 0L; } public static int getLengthOfRange(String property) { return 0x0FFFFFFF; } @Override public void initializeDefaultPreferences() { IPreferenceStore store = Activator.getDefault().getPreferenceStore(); store.setDefault(S60_KEY_FILE, DefaultKeyInitializer.getDefaultKeyFile().getAbsolutePath()); store.setDefault(S60_CERT_FILE, DefaultKeyInitializer.getDefaultCertFile().getAbsolutePath()); store.setDefault(S60_PASS_KEY, DefaultKeyInitializer.DEFAULT_PASS_KEY); } }