package com.limegroup.gnutella;
import org.limewire.core.settings.ApplicationSettings;
import org.limewire.core.settings.InstallSettings;
import org.limewire.io.GUID;
import org.limewire.util.StringUtils;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.limegroup.gnutella.util.LimeWireUtils;
@Singleton
public class ApplicationServicesImpl implements ApplicationServices {
private final byte[] bittorrentGUID;
private final byte[] limewireGUID;
private final boolean newInstall;
private final boolean newJavaVersion;
@Inject
ApplicationServicesImpl() {
byte [] myguid=null;
try {
myguid = GUID.fromHexString(ApplicationSettings.CLIENT_ID.get());
}catch(IllegalArgumentException iae) {
myguid = GUID.makeGuid();
ApplicationSettings.CLIENT_ID.set((new GUID(myguid)).toHexString());
}
limewireGUID = myguid;
byte []mybtguid = new byte[20];
mybtguid[0] = 0x2D; // -
mybtguid[1] = 0x4C; // L
mybtguid[2] = 0x57; // W
System.arraycopy(StringUtils.toAsciiBytes(LimeWireUtils.BT_REVISION),0, mybtguid,3, 4);
mybtguid[7] = 0x2D; // -
System.arraycopy(limewireGUID,0,mybtguid,8,12);
bittorrentGUID = mybtguid;
String lastRunVersion = getVersionNoProModifier(InstallSettings.LAST_VERSION_RUN.get());
String limewireVersion = getVersionNoProModifier(LimeWireUtils.getLimeWireVersion());
newInstall = lastRunVersion == null || !lastRunVersion.equals(limewireVersion);
String lastJavaVersion = InstallSettings.LAST_JAVA_VERSION_RUN.get();
String currentJavaVersion = System.getProperty("java.version");
newJavaVersion = lastJavaVersion == null || !lastJavaVersion.equals(currentJavaVersion);
InstallSettings.LAST_JAVA_VERSION_RUN.set(currentJavaVersion);
}
/**
* @param fullVersion full version string, such as "5.1.1", "5.1.1 Pro"
* @return the version string, stripping out any "Pro" modifiers.
* If the version string is null, or does not end in "Pro", returns
* the argument which was passed in.
*/
private static String getVersionNoProModifier(String fullVersion) {
String fullVersionNoModifiers = null;
if (fullVersion != null) {
fullVersionNoModifiers = fullVersion.endsWith("Pro") ?
fullVersion.substring(0, fullVersion.length()-4) : fullVersion;
}
return fullVersionNoModifiers;
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.ApplicationServices#getMyBTGUID()
*/
public byte [] getMyBTGUID() {
return bittorrentGUID;
}
/* (non-Javadoc)
* @see com.limegroup.gnutella.ApplicationServices#getMyGUID()
*/
public byte [] getMyGUID() {
return limewireGUID;
}
@Override
public boolean isNewInstall() {
return newInstall;
}
@Override
public boolean isNewJavaVersion() {
return newJavaVersion;
}
}