/** * It parses the feature typelist tag * * @param parser * @throws IOException * @throws XmlPullParserException */ private void parseFeatureTypeListTag(KXmlParser parser) throws IOException, XmlPullParserException { int currentTag; boolean end = false; parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.WFS_FEATURETYPELIST); currentTag = parser.next(); while (!end) { switch (currentTag) { case KXmlParser.START_TAG: if (parser.getName().compareToIgnoreCase(CapabilitiesTags.WFS_FEATURETYPE) == 0) { // Parse the namespaces... parseNamespaces(parser); WFSFeature1_0_0 feature = new WFSFeature1_0_0(); feature.parse(parser); features.put(feature.getName(), feature); } break; case KXmlParser.END_TAG: if (parser.getName().compareTo(CapabilitiesTags.WFS_FEATURETYPELIST) == 0) end = true; break; case KXmlParser.TEXT: break; } if (!end) { currentTag = parser.next(); } } }
/** * Parse an operation into a DcpType tag * * @param parser The KXMLParser * @param operation The WFS operation to parse * @throws IOException * @throws XmlPullParserException */ private void parserDcpType(KXmlParser parser, int operation) throws XmlPullParserException, IOException { int currentTag; boolean end = false; currentTag = parser.next(); while (!end) { switch (currentTag) { case KXmlParser.START_TAG: if (parser.getName().compareTo(CapabilitiesTags.HTTP) == 0) { parseHTTPTag(parser, operation); } break; case KXmlParser.END_TAG: if (parser.getName().compareTo(CapabilitiesTags.DCPTYPE) == 0) end = true; break; case KXmlParser.TEXT: break; } if (!end) { currentTag = parser.next(); } } }
/** Parses the Request tag */ private void parseRequestTag(KXmlParser parser) throws IOException, XmlPullParserException { int currentTag; boolean end = false; parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.REQUEST); currentTag = parser.next(); while (!end) { switch (currentTag) { case KXmlParser.START_TAG: if (parser.getName().compareTo(CapabilitiesTags.GETCAPABILITIES) == 0) { parserDcpType(parser, WFSOperation.GETCAPABILITIES); } else if (parser.getName().compareTo(CapabilitiesTags.WFS_DESCRIBEFEATURETYPE) == 0) { parserDcpType(parser, WFSOperation.DESCRIBEFEATURETYPE); } else if (parser.getName().compareTo(CapabilitiesTags.WFS_GETFEATURE) == 0) { parserDcpType(parser, WFSOperation.GETFEATURE); } else if (parser.getName().compareTo(CapabilitiesTags.WFS_LOCKFEATURE) == 0) { parserDcpType(parser, WFSOperation.LOCKFEATURE); } else if (parser.getName().compareTo(CapabilitiesTags.WFS_TRANSACTION) == 0) { parserDcpType(parser, WFSOperation.TRANSACTION); } break; case KXmlParser.END_TAG: if (parser.getName().compareTo(CapabilitiesTags.REQUEST) == 0) end = true; break; case KXmlParser.TEXT: break; } if (!end) { currentTag = parser.next(); } } }
private void parseCapabilityTag(KXmlParser parser) throws IOException, XmlPullParserException { int currentTag; boolean end = false; parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.CAPABILITY); currentTag = parser.next(); while (!end) { switch (currentTag) { case KXmlParser.START_TAG: if (parser.getName().compareTo(CapabilitiesTags.REQUEST) == 0) { parseRequestTag(parser); } else if (parser.getName().compareTo(CapabilitiesTags.EXCEPTION) == 0) { // TODO Parse exception tags... parser.skipSubTree(); } else if ((parser.getName().compareTo(CapabilitiesTags.VENDORSPECIFICCAPABILITIES) == 0) || (parser.getName().compareTo(CapabilitiesTags.USERDEFINEDSYMBOLIZATION) == 0)) { parser.skipSubTree(); } break; case KXmlParser.END_TAG: if (parser.getName().compareTo(CapabilitiesTags.CAPABILITY) == 0) end = true; break; case KXmlParser.TEXT: break; } if (!end) { currentTag = parser.next(); } } }
/** Parses the Service Information */ private void parseServiceTag(KXmlParser parser) throws IOException, XmlPullParserException { int currentTag; boolean end = false; parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.SERVICE); currentTag = parser.next(); while (!end) { switch (currentTag) { case KXmlParser.START_TAG: if (parser.getName().compareToIgnoreCase(CapabilitiesTags.NAME) == 0) { serviceInfo.name = parser.nextText(); } else if (parser.getName().compareTo(CapabilitiesTags.WFS_TITLE) == 0) { serviceInfo.title = parser.nextText(); } else if (parser.getName().compareTo(CapabilitiesTags.WFS_ABSTRACT) == 0) { serviceInfo.abstr = parser.nextText(); } else if (parser.getName().compareTo(CapabilitiesTags.ONLINERESOURCE) == 0) { serviceInfo.online_resource = parser.nextText(); } break; case KXmlParser.END_TAG: if (parser.getName().compareTo(CapabilitiesTags.SERVICE) == 0) end = true; break; case KXmlParser.TEXT: break; } if (!end) { currentTag = parser.next(); } } }
/** * Parse an operation into a HTTP tag * * @param parser The KXMLParser * @param operation The WFS operation to parse * @throws IOException * @throws XmlPullParserException */ private void parseHTTPTag(KXmlParser parser, int operation) throws XmlPullParserException, IOException { int currentTag; boolean end = false; currentTag = parser.next(); while (!end) { switch (currentTag) { case KXmlParser.START_TAG: int protocol = -1; if (parser.getName().compareTo(CapabilitiesTags.GET) == 0) { protocol = WFSOperation.PROTOCOL_GET; } if (parser.getName().compareTo(CapabilitiesTags.POST) == 0) { protocol = WFSOperation.PROTOCOL_POST; } if (protocol > -1) { String value = null; for (int i = 0; i < parser.getAttributeCount(); i++) { if (parser .getAttributeName(i) .toUpperCase() .compareTo(CapabilitiesTags.ONLINERESOURCE.toUpperCase()) == 0) { value = parser.getAttributeValue(i); } } if (value == null) { serviceInfo.addOperation(operation, protocol); } else { serviceInfo.addOperation(operation, protocol, value); } } break; case KXmlParser.END_TAG: if (parser.getName().compareTo(CapabilitiesTags.HTTP) == 0) end = true; break; case KXmlParser.TEXT: break; } if (!end) { currentTag = parser.next(); } } }
/** * Comprueba si un fichero VRT esta en correcto estado, en caso contrario lanza una excepcion * indicando el tipo de error en la apertura. * * @param file * @throws FileOpenVRTException */ private void checkFileVRT(File file) throws FileOpenVRTException { KXmlParser parser = new KXmlParser(); FileReader fileReader = null; try { fileReader = new FileReader(file); parser.setInput(fileReader); parser.nextTag(); parser.require(XmlPullParser.START_TAG, null, "VRTDataset"); while (parser.nextTag() != XmlPullParser.END_TAG) { parser.require(XmlPullParser.START_TAG, null, "VRTRasterBand"); String name; while (parser.nextTag() != XmlPullParser.END_TAG) { parser.require(XmlPullParser.START_TAG, null, null); boolean relativePath = false; for (int i = 0; i < parser.getAttributeCount(); i++) { if (parser.getAttributeName(i).equals("relativetoVRT") && parser.getAttributeValue(i).equals("1")) relativePath = true; } name = parser.getName(); String nameFile = parser.nextText(); if (name.equals("SourceFilename")) { if (relativePath) nameFile = file.getParent() + File.separator + nameFile; File tryFile = new File(nameFile); if (!tryFile.exists()) throw new FileOpenVRTException( PluginServices.getText(this, "no_existe_fichero") + " " + nameFile); } parser.require(XmlPullParser.END_TAG, null, name); } parser.require(XmlPullParser.END_TAG, null, "VRTRasterBand"); } parser.require(XmlPullParser.END_TAG, null, "VRTDataset"); parser.next(); parser.require(XmlPullParser.END_DOCUMENT, null, null); } catch (XmlPullParserException e) { throw new FileOpenVRTException( PluginServices.getText(this, "el_fichero") + " " + file.getName().toString() + " " + PluginServices.getText(this, "esta_formato_desconocido")); } catch (IOException e) { throw new FileOpenVRTException( PluginServices.getText(this, "no_puede_abrir_fichero") + " " + file.getName().toString()); } finally { if (fileReader != null) try { fileReader.close(); } catch (IOException e) { } } }
/** * Parses the legendURL tag. * * @param parser * @throws IOException * @throws XmlPullParserException */ protected void parseLegendURL(KXmlParser parser) throws IOException, XmlPullParserException { int currentTag; boolean end = false; parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.LEGENDURL); String value = new String(); legendURL = new LegendURL(); // First of all set whether the layer is Queryable reading the // attribute. value = parser.getAttributeValue("", CapabilitiesTags.WIDTH); if (value != null) { legendURL.width = Integer.parseInt(value); } value = parser.getAttributeValue("", CapabilitiesTags.HEIGHT); if (value != null) { legendURL.height = Integer.parseInt(value); } currentTag = parser.nextTag(); while (!end) { switch (currentTag) { case KXmlParser.START_TAG: if (parser.getName().compareTo(CapabilitiesTags.FORMAT) == 0) { legendURL.format = parser.nextText(); } else if (parser.getName().compareTo(CapabilitiesTags.ONLINERESOURCE) == 0) { value = parser.getAttributeValue("", CapabilitiesTags.XLINK_TYPE); if (value != null) legendURL.onlineResource_type = value; value = parser.getAttributeValue("", CapabilitiesTags.XLINK_HREF); if (value != null) legendURL.onlineResource_href = value; } break; case KXmlParser.END_TAG: if (parser.getName().compareTo(CapabilitiesTags.LEGENDURL) == 0) end = true; break; case KXmlParser.TEXT: break; } if (!end) { currentTag = parser.next(); } } parser.require(KXmlParser.END_TAG, null, CapabilitiesTags.LEGENDURL); }
public static Parameter deserialize(final KXmlParser parser) throws XmlPullParserException, IOException { String sParent = null; boolean bMandatory = true; int tag = parser.nextTag(); boolean bOver = false; while (!bOver) { switch (tag) { case XmlPullParser.START_TAG: if (parser.getName().compareTo(ATTRIBUTE) == 0) { final String sName = parser.getAttributeValue("", NAME); if (sName.compareTo(PARENT) == 0) { sParent = parser.getAttributeValue("", VALUE); } else if (sName.compareTo(PARENT) == 0) { final String sMandatory = parser.getAttributeValue("", VALUE); bMandatory = Boolean.parseBoolean(sMandatory); } } break; case XmlPullParser.END_TAG: if (parser.getName().compareTo(INPUT) == 0) { bOver = true; } break; case XmlPullParser.TEXT: break; } if (!bOver) { tag = parser.next(); } } final ParameterTableField param = new ParameterTableField(); final AdditionalInfoTableField ai = new AdditionalInfoTableField(sParent, bMandatory); param.setParameterAdditionalInfo(ai); return param; }
public static ArrayList open(final String sFilename) { ArrayList images = null; final ArrayList elements = new ArrayList(); HelpElement element = null; final KXmlParser parser = new KXmlParser(); try { final File file = new File(sFilename); parser.setInput(new FileInputStream(file), encoding); int tag = parser.nextTag(); boolean bOut = false; if (parser.getEventType() != XmlPullParser.END_DOCUMENT) { while ((tag != XmlPullParser.END_DOCUMENT) && !bOut) { switch (tag) { case XmlPullParser.START_TAG: if (parser.getName().compareTo(HELP) == 0) { } else if (parser.getName().compareTo(HelpElement.ELEMENT) == 0) { images = new ArrayList(); final String sText = parser.getAttributeValue("", HelpElement.TEXT); final String sName = parser.getAttributeValue("", HelpElement.NAME); final String sDescription = parser.getAttributeValue("", HelpElement.DESCRIPTION); final int iType = Integer.parseInt(parser.getAttributeValue("", HelpElement.TYPE)); element = new HelpElement(); element.setText(sText); element.setName(sName); element.setType(iType); element.setDescription(sDescription); } else if (parser.getName().compareTo(ImageAndDescription.IMAGE) == 0) { final ImageAndDescription iad = new ImageAndDescription(); final String sImageFilename = parser.getAttributeValue("", ImageAndDescription.FILE); final String sDesc = parser.getAttributeValue("", ImageAndDescription.DESCRIPTION); iad.setDescription(sDesc); iad.setFilename(sImageFilename); images.add(iad); } break; case XmlPullParser.END_TAG: if (parser.getName().compareTo(HELP) == 0) { bOut = true; } else if (parser.getName().compareTo(HelpElement.ELEMENT) == 0) { element.setImages(images); elements.add(element); } break; case XmlPullParser.TEXT: break; } if (!bOut) { tag = parser.next(); } } } } catch (final Exception e) { return null; } return elements; }
/** * Reads the public.xml file in data/res/values/ for a given resource folder and builds up a map * of public resources. * * <p>This map is a subset of the full resource map that only contains framework resources that * are public. * * @param logger a logger to report issues to */ public void loadPublicResources(@Nullable ILogger logger) { IAbstractFolder valueFolder = getResFolder().getFolder(SdkConstants.FD_RES_VALUES); if (valueFolder.exists() == false) { return; } IAbstractFile publicXmlFile = valueFolder.getFile("public.xml"); // $NON-NLS-1$ if (publicXmlFile.exists()) { Reader reader = null; try { reader = new BufferedReader(new InputStreamReader(publicXmlFile.getContents(), Charsets.UTF_8)); KXmlParser parser = new KXmlParser(); parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); parser.setInput(reader); ResourceType lastType = null; String lastTypeName = ""; while (true) { int event = parser.next(); if (event == XmlPullParser.START_TAG) { // As of API 15 there are a number of "java-symbol" entries here if (!parser.getName().equals("public")) { // $NON-NLS-1$ continue; } String name = null; String typeName = null; for (int i = 0, n = parser.getAttributeCount(); i < n; i++) { String attribute = parser.getAttributeName(i); if (attribute.equals("name")) { // $NON-NLS-1$ name = parser.getAttributeValue(i); if (typeName != null) { // Skip id attribute processing break; } } else if (attribute.equals("type")) { // $NON-NLS-1$ typeName = parser.getAttributeValue(i); } } if (name != null && typeName != null) { ResourceType type = null; if (typeName.equals(lastTypeName)) { type = lastType; } else { type = ResourceType.getEnum(typeName); lastType = type; lastTypeName = typeName; } if (type != null) { ResourceItem match = null; Map<String, ResourceItem> map = mResourceMap.get(type); if (map != null) { match = map.get(name); } if (match != null) { List<ResourceItem> publicList = mPublicResourceMap.get(type); if (publicList == null) { // Pick initial size for the list to hold the public // resources. We could just use map.size() here, // but they're usually much bigger; for example, // in one platform version, there are 1500 drawables // and 1200 strings but only 175 and 25 public ones // respectively. int size; switch (type) { case STYLE: size = 500; break; case ATTR: size = 1000; break; case DRAWABLE: size = 200; break; case ID: size = 50; break; case LAYOUT: case COLOR: case STRING: case ANIM: case INTERPOLATOR: size = 30; break; default: size = 10; break; } publicList = new ArrayList<ResourceItem>(size); mPublicResourceMap.put(type, publicList); } publicList.add(match); } else { // log that there's a public resource that doesn't actually // exist? } } else { // log that there was a reference to a typo that doesn't actually // exist? } } } else if (event == XmlPullParser.END_DOCUMENT) { break; } } } catch (Exception e) { if (logger != null) { logger.error(e, "Can't read and parse public attribute list"); } } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { // Nothing to be done here - we don't care if it closed or not. } } } } // put unmodifiable list for all res type in the public resource map // this will simplify access for (ResourceType type : ResourceType.values()) { List<ResourceItem> list = mPublicResourceMap.get(type); if (list == null) { list = Collections.emptyList(); } else { list = Collections.unmodifiableList(list); } // put the new list in the map mPublicResourceMap.put(type, list); } }