// Path: ask-app/src/main/java/com/androidstarterkit/injection/file/base/InjectionBaseFile.java
// public class InjectionBaseFile<T extends Config> extends File implements CodeGenerator<T> {
//   protected List<String> codelines;
//   protected List<T> configs;
// 
//   public InjectionBaseFile(String fullPathname) {
//     super(fullPathname);
// 
//     codelines = FileUtils.readFileAsString(this);
//     configs = new ArrayList<>();
//   }
// 
//   public List<String> getCodelines() {
//     return codelines;
//   }
// 
//   public void setCodelines(List<String> codelines) {
//     this.codelines = codelines;
//   }
// 
//   public void setCodeline(int index, String codeline) {
//     codelines.set(index, codeline);
//   }
// 
//   public void addCodeline(int index, String codeline) {
//     codelines.add(index, codeline);
//   }
// 
//   public void addCodelines(int index, List<String> codelines) {
//     this.codelines.addAll(index, codelines);
//   }
// 
//   public void removeCodeline(int index) {
//     codelines.remove(index);
//   }
// 
//   @Override
//   public void addConfig(T config) {
//     if (configs == null) {
//       configs = new ArrayList<>();
//     }
// 
//     configs.add(config);
//   }
// 
//   @Override
//   public void addConfig(List<T> configs) {
//     if (this.configs == null) {
//       this.configs = new ArrayList<>();
//     }
// 
//     this.configs.addAll(configs);
//   }
// 
//   @Override
//   public List<T> getConfigs() {
//     return configs;
//   }
// 
//   @Override
//   public void apply() {
//     FileUtils.writeFile(this, codelines);
//   }
// 
//   public void print() {
//     codelines.forEach(System.out::println);
//   }
// }
// 
// Path: ask-app/src/main/java/com/androidstarterkit/injection/model/ManifestConfig.java
// public class ManifestConfig extends Config {
//   @SerializedName("element")
//   private List<ManifestElement> manifestElements;
// 
//   public ManifestConfig(String path, String fileNameEx) {
//     super(path, fileNameEx);
//   }
// 
//   public List<ManifestElement> getManifestElements() {
//     return manifestElements;
//   }
// 
//   @Override
//   public String toString() {
//     return "ManifestConfig{" +
//         "manifestElements=" + manifestElements +
//         '}';
//   }
// }
// 
// Path: ask-app/src/main/java/com/androidstarterkit/tool/XmlDomReader.java
// public class XmlDomReader {
//   private static final String TAG = XmlDomReader.class.getSimpleName();
// 
//   private Document document;
// 
//   public XmlDomReader(File file) {
//     DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
// 
//     DocumentBuilder documentBuilder;
//     try {
//       documentBuilder = builderFactory.newDocumentBuilder();
//       document = documentBuilder.parse(file);
//     } catch (ParserConfigurationException | SAXException | IOException e) {
//       throw new IllegalDocumentException("failed to create document : " + file.getPath());
//     }
//     document.getDocumentElement().normalize();
//   }
// 
//   public Document getDocument() {
//     return document;
//   }
// 
//   public Element getRootNode() {
//     return document.getDocumentElement();
//   }
// }
// 
// Path: ask-app/src/main/java/com/androidstarterkit/tool/XmlDomWriter.java
// public class XmlDomWriter {
// 
//   public void writeDocument(File file, Document document) throws TransformerException, IOException {
//     document.setXmlStandalone(true);
// 
//     TransformerFactory tf = TransformerFactory.newInstance();
//     tf.setAttribute("indent-number", new Integer(4));
// 
//     Transformer transformer = tf.newTransformer();
//     transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//     transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
//     DOMSource source = new DOMSource(document);
// 
//     FileWriter fileWriter = new FileWriter(file);
//     StreamResult writeStream = new StreamResult(fileWriter);
// 
//     transformer.transform(source, writeStream);
//   }
// }


import com.androidstarterkit.injection.file.base.InjectionBaseFile;
import com.androidstarterkit.injection.model.ManifestConfig;
import com.androidstarterkit.tool.XmlDomReader;
import com.androidstarterkit.tool.XmlDomWriter;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.io.IOException;
import javax.xml.transform.TransformerException;
package com.androidstarterkit.injection.file.android;






public class InjectionXmlFile extends InjectionBaseFile<ManifestConfig> {
  protected Document document;
  protected Element rootElement;

  public InjectionXmlFile(String fullPathname) {
    super(fullPathname);

// Path: ask-app/src/main/java/com/androidstarterkit/injection/file/base/InjectionBaseFile.java
// public class InjectionBaseFile<T extends Config> extends File implements CodeGenerator<T> {
//   protected List<String> codelines;
//   protected List<T> configs;
// 
//   public InjectionBaseFile(String fullPathname) {
//     super(fullPathname);
// 
//     codelines = FileUtils.readFileAsString(this);
//     configs = new ArrayList<>();
//   }
// 
//   public List<String> getCodelines() {
//     return codelines;
//   }
// 
//   public void setCodelines(List<String> codelines) {
//     this.codelines = codelines;
//   }
// 
//   public void setCodeline(int index, String codeline) {
//     codelines.set(index, codeline);
//   }
// 
//   public void addCodeline(int index, String codeline) {
//     codelines.add(index, codeline);
//   }
// 
//   public void addCodelines(int index, List<String> codelines) {
//     this.codelines.addAll(index, codelines);
//   }
// 
//   public void removeCodeline(int index) {
//     codelines.remove(index);
//   }
// 
//   @Override
//   public void addConfig(T config) {
//     if (configs == null) {
//       configs = new ArrayList<>();
//     }
// 
//     configs.add(config);
//   }
// 
//   @Override
//   public void addConfig(List<T> configs) {
//     if (this.configs == null) {
//       this.configs = new ArrayList<>();
//     }
// 
//     this.configs.addAll(configs);
//   }
// 
//   @Override
//   public List<T> getConfigs() {
//     return configs;
//   }
// 
//   @Override
//   public void apply() {
//     FileUtils.writeFile(this, codelines);
//   }
// 
//   public void print() {
//     codelines.forEach(System.out::println);
//   }
// }
// 
// Path: ask-app/src/main/java/com/androidstarterkit/injection/model/ManifestConfig.java
// public class ManifestConfig extends Config {
//   @SerializedName("element")
//   private List<ManifestElement> manifestElements;
// 
//   public ManifestConfig(String path, String fileNameEx) {
//     super(path, fileNameEx);
//   }
// 
//   public List<ManifestElement> getManifestElements() {
//     return manifestElements;
//   }
// 
//   @Override
//   public String toString() {
//     return "ManifestConfig{" +
//         "manifestElements=" + manifestElements +
//         '}';
//   }
// }
// 
// Path: ask-app/src/main/java/com/androidstarterkit/tool/XmlDomReader.java
// public class XmlDomReader {
//   private static final String TAG = XmlDomReader.class.getSimpleName();
// 
//   private Document document;
// 
//   public XmlDomReader(File file) {
//     DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
// 
//     DocumentBuilder documentBuilder;
//     try {
//       documentBuilder = builderFactory.newDocumentBuilder();
//       document = documentBuilder.parse(file);
//     } catch (ParserConfigurationException | SAXException | IOException e) {
//       throw new IllegalDocumentException("failed to create document : " + file.getPath());
//     }
//     document.getDocumentElement().normalize();
//   }
// 
//   public Document getDocument() {
//     return document;
//   }
// 
//   public Element getRootNode() {
//     return document.getDocumentElement();
//   }
// }
// 
// Path: ask-app/src/main/java/com/androidstarterkit/tool/XmlDomWriter.java
// public class XmlDomWriter {
// 
//   public void writeDocument(File file, Document document) throws TransformerException, IOException {
//     document.setXmlStandalone(true);
// 
//     TransformerFactory tf = TransformerFactory.newInstance();
//     tf.setAttribute("indent-number", new Integer(4));
// 
//     Transformer transformer = tf.newTransformer();
//     transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//     transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
//     DOMSource source = new DOMSource(document);
// 
//     FileWriter fileWriter = new FileWriter(file);
//     StreamResult writeStream = new StreamResult(fileWriter);
// 
//     transformer.transform(source, writeStream);
//   }
// }


// Path: ask-app/src/main/java/com/androidstarterkit/injection/file/android/InjectionXmlFile.java
import com.androidstarterkit.injection.file.base.InjectionBaseFile;
import com.androidstarterkit.injection.model.ManifestConfig;
import com.androidstarterkit.tool.XmlDomReader;
import com.androidstarterkit.tool.XmlDomWriter;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.io.IOException;
import javax.xml.transform.TransformerException;

package com.androidstarterkit.injection.file.android;






public class InjectionXmlFile extends InjectionBaseFile<ManifestConfig> {
  protected Document document;
  protected Element rootElement;

  public InjectionXmlFile(String fullPathname) {
    super(fullPathname);

    XmlDomReader xmlDomParser = new XmlDomReader(this);