/** * */ 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)); } }