package org.itsnat.droid.impl.dom.layout;
import org.itsnat.droid.impl.dom.DOMAttr;
import org.itsnat.droid.impl.dom.XMLDOM;
import org.itsnat.droid.impl.util.NamespaceUtil;
import java.util.ArrayList;
import java.util.List;
/**
* Created by jmarranz on 19/01/2016.
*/
public abstract class XMLDOMLayoutPage extends XMLDOMLayout
{
protected ArrayList<DOMScript> scriptList;
public List<DOMScript> getDOMScriptList()
{
return scriptList;
}
public void addDOMScript(DOMScript script)
{
if (scriptList == null) this.scriptList = new ArrayList<DOMScript>();
scriptList.add(script);
}
@Override
public void partialClone(XMLDOM cloned)
{
super.partialClone(cloned);
((XMLDOMLayoutPage)cloned).scriptList = this.scriptList;
}
public String extractAttrNamespaceURI(String namespaceURI, String name)
{
if (namespaceURI != null) return namespaceURI; // De ItsNat server el script nunca contiene un android:localname (localname a secas) si el namespaceURI ha sido especificado explícitamente
// El namespace puede estar en el name como prefijo por ejemplo "android:"
String prefix = NamespaceUtil.getPrefix(name);
if (prefix == null)
return null;
return getRootNamespaceByPrefix(prefix); // Puede ser null, no encontrado
}
public String extractAttrLocalName(String namespaceURI, String name)
{
if (namespaceURI != null) return name; // De ItsNat server el script nunca contiene un android:localname (localname a secas) si el namespaceURI ha sido especificado explícitamente
// El namespace puede estar en el name como prefijo por ejemplo "android:"
String prefix = NamespaceUtil.getPrefix(name);
if (prefix == null)
return name;
namespaceURI = getRootNamespaceByPrefix(prefix);
if (namespaceURI != null) // Sólo se soportan namespaces declarados en el View root, si es null se procesará lo consideramos como un atributo desconocido y conservamos el prefijo
return NamespaceUtil.getLocalName(name);
return name;
}
public DOMAttr createDOMAttrNotSyncResource(String namespaceURI, String name, String value)
{
String namespaceURIFinal = extractAttrNamespaceURI(namespaceURI, name);
String localName = extractAttrLocalName(namespaceURI, name);
DOMAttr attr = DOMAttr.createDOMAttr(namespaceURIFinal, localName, value);
return attr;
}
}