/**
*
*/
package org.commcare.android.resource.installers;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import org.commcare.android.util.AndroidCommCarePlatform;
import org.commcare.resources.model.Resource;
import org.commcare.resources.model.ResourceInitializationException;
import org.commcare.resources.model.ResourceTable;
import org.commcare.resources.model.UnresolvedResourceException;
import org.javarosa.core.reference.Reference;
import org.javarosa.core.services.locale.Localization;
import org.javarosa.core.util.externalizable.DeserializationException;
import org.javarosa.core.util.externalizable.ExtUtil;
import org.javarosa.core.util.externalizable.PrototypeFactory;
/**
* @author ctsims
*
*/
public class LocaleAndroidInstaller extends FileSystemInstaller {
String locale;
public LocaleAndroidInstaller() {
}
public LocaleAndroidInstaller(String destination, String upgradeDestination, String locale) {
super(destination, upgradeDestination);
this.locale = locale;
}
/* (non-Javadoc)
* @see org.commcare.resources.model.ResourceInstaller#initialize(org.commcare.util.CommCareInstance)
*/
public boolean initialize(AndroidCommCarePlatform instance) throws ResourceInitializationException {
Localization.registerLanguageReference(locale, localLocation);
return true;
}
protected int customInstall(Resource r, Reference local, boolean upgrade) throws IOException, UnresolvedResourceException {
return upgrade ? Resource.RESOURCE_STATUS_UPGRADE : Resource.RESOURCE_STATUS_INSTALLED;
}
/* (non-Javadoc)
* @see org.commcare.resources.model.ResourceInstaller#requiresRuntimeInitialization()
*/
public boolean requiresRuntimeInitialization() {
return true;
}
/* (non-Javadoc)
* @see org.javarosa.core.util.externalizable.Externalizable#readExternal(java.io.DataInputStream, org.javarosa.core.util.externalizable.PrototypeFactory)
*/
public void readExternal(DataInputStream in, PrototypeFactory pf) throws IOException, DeserializationException {
super.readExternal(in, pf);
this.locale = ExtUtil.nullIfEmpty(ExtUtil.readString(in));
}
/* (non-Javadoc)
* @see org.javarosa.core.util.externalizable.Externalizable#writeExternal(java.io.DataOutputStream)
*/
public void writeExternal(DataOutputStream out) throws IOException {
super.writeExternal(out);
ExtUtil.writeString(out, ExtUtil.emptyIfNull(locale));
}
}