// Path: java/com/raidzero/teamcitydownloader/adapters/AppRevisionAdapter.java
// public class AppRevisionAdapter extends ArrayAdapter<AppRevision> {
// 
//     private static final String tag="ConfigsListAdapter";
//     private Context context;
//     
//     public AppRevisionAdapter(Context context, ArrayList<AppRevision> revisions) {
//         super(context, R.layout.item_row, revisions);
//         this.context = context;
//     }
// 
//     @Override
//     public View getView(int position, View convertView, ViewGroup parent) {
// 
//         AppRevision revision = getItem(position);
//         // if we arent reusing a view, inflate one
//         if (convertView == null) {
//             convertView = LayoutInflater.from(getContext()).inflate(R.layout.whats_new_revision, parent, false);
//         }
// 
//         // get the views
//         TextView txtVersion = (TextView) convertView.findViewById(R.id.txt_revision_version);
//         TextView txtDate = (TextView) convertView.findViewById(R.id.txt_revision_date);
//         TextView changesList = (TextView) convertView.findViewById(R.id.txt_revision_changes);
//             
//         // set their values
//         txtVersion.setText("v" + revision.getVersionName());
//         txtDate.setText(revision.getDate());
// 
//         StringBuilder sb = new StringBuilder();
//         ArrayList<String> changes = revision.getChanges();
// 
//         int numChanges = changes.size();
//         int changeNum = 0;
//         for (String c : revision.getChanges()) {
//             sb.append("• ").append(c);
//             // only add new line if not the last change in the list
//             if (changeNum++ < numChanges) {
//                 sb.append("\n");
//             }
//         }
// 
//         changesList.setText(sb.toString());
// 
//         // return completed view
//         return convertView;
//     }
// 
//     // make view not clickable
//     @Override
//     public boolean isEnabled(int position) {
//         return false;
//     }
// }
// 
// Path: java/com/raidzero/teamcitydownloader/data/AppRevision.java
// public class AppRevision {
//     private static final String tag = "AppRevision";
// 
//     private String versionName;
//     private String date;
//     private ArrayList<String> changes;
// 
//     public AppRevision(String versionName, String date, ArrayList<String> changes) {
//         this.versionName = versionName;
//         this.date = date;
//         this.changes = changes;
//     }
// 
//     public String getVersionName() {
//         return versionName;
//     }
// 
//     public String getDate() {
//         return date;
//     }
// 
//     public ArrayList<String> getChanges() {
//         return changes;
//     }
// }
// 
// Path: java/com/raidzero/teamcitydownloader/global/Debug.java
// public class Debug {
//     //private static final boolean debug = false;
//     //private static final boolean debug = true;
// 
//     private static final boolean debug = BuildConfig.DEBUG;
// 
//     public static void Log(String tag, String msg) {
//         if (debug) {
//             Log.d(tag, msg);
//         }
//     }
// 
//     public static void Log(String tag, String msg, Exception e) {
//         if (debug) {
//             Log.d(tag, msg);
//             e.printStackTrace();
//         }
//     }
// }
// 
// Path: java/com/raidzero/teamcitydownloader/global/TeamCityXmlParser.java
// public class TeamCityXmlParser {
//     private static final String tag = "TeamCityXmlParser";
// 
//     private Document doc;
// 
//     public TeamCityXmlParser(String xml) {
//         // parse this xml string into a Document
//         this.doc = parseXmlString(xml);
//     }
// 
//     private Document parseXmlString(String xml) {
//         try {
//             DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
//             InputSource is = new InputSource();
//             is.setCharacterStream(new StringReader(xml));
//             return db.parse(is);
//         } catch (Exception e) {
//             Debug.Log(tag, "Document error: ", e);
//         }
// 
//         return null;
//     }
// 
//     public NodeList getNodes(String elementName) {
//         NodeList nodes = doc.getElementsByTagName(elementName);
//         Debug.Log(tag, "getNodes(" + elementName + ") returning " + nodes.getLength() + " nodes.");
//         return nodes;
//     }
// 
//     public NodeList getNodes(Element element, String elementName) {
//         NodeList nodes = element.getElementsByTagName(elementName);
//         Debug.Log(tag, "getNodes(" + elementName + ") returning " + nodes.getLength() + " nodes.");
//         return nodes;
//     }
// 
//     public String getAttribute(Element element, String attribute) {
//         return element.getAttribute(attribute);
//     }
// 
// 
// }


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.raidzero.teamcitydownloader.R;
import com.raidzero.teamcitydownloader.adapters.AppRevisionAdapter;
import com.raidzero.teamcitydownloader.data.AppRevision;
import com.raidzero.teamcitydownloader.global.Debug;
import com.raidzero.teamcitydownloader.global.TeamCityXmlParser;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.io.InputStream;
import java.util.ArrayList;

        try {
            InputStream inputStream = getActivity().getAssets().open("whats_new.xml");

            // get size
            int size = inputStream.available();

            // make a byte buffer of this size
            byte[] buffer = new byte[size];

            // read the file into buffer
            inputStream.read(buffer);
            inputStream.close();

            xml = new String(buffer);

        } catch (Exception e) {
            // nothing
        }

        if (!xml.isEmpty()) {
            // start parsing
            TeamCityXmlParser parser = new TeamCityXmlParser(xml);

            // one root node
            NodeList rootList = parser.getNodes("whats-new");
            Element rootNode = (Element) rootList.item(0);

            NodeList revisions = parser.getNodes(rootNode, "revision");

// Path: java/com/raidzero/teamcitydownloader/adapters/AppRevisionAdapter.java
// public class AppRevisionAdapter extends ArrayAdapter<AppRevision> {
// 
//     private static final String tag="ConfigsListAdapter";
//     private Context context;
//     
//     public AppRevisionAdapter(Context context, ArrayList<AppRevision> revisions) {
//         super(context, R.layout.item_row, revisions);
//         this.context = context;
//     }
// 
//     @Override
//     public View getView(int position, View convertView, ViewGroup parent) {
// 
//         AppRevision revision = getItem(position);
//         // if we arent reusing a view, inflate one
//         if (convertView == null) {
//             convertView = LayoutInflater.from(getContext()).inflate(R.layout.whats_new_revision, parent, false);
//         }
// 
//         // get the views
//         TextView txtVersion = (TextView) convertView.findViewById(R.id.txt_revision_version);
//         TextView txtDate = (TextView) convertView.findViewById(R.id.txt_revision_date);
//         TextView changesList = (TextView) convertView.findViewById(R.id.txt_revision_changes);
//             
//         // set their values
//         txtVersion.setText("v" + revision.getVersionName());
//         txtDate.setText(revision.getDate());
// 
//         StringBuilder sb = new StringBuilder();
//         ArrayList<String> changes = revision.getChanges();
// 
//         int numChanges = changes.size();
//         int changeNum = 0;
//         for (String c : revision.getChanges()) {
//             sb.append("• ").append(c);
//             // only add new line if not the last change in the list
//             if (changeNum++ < numChanges) {
//                 sb.append("\n");
//             }
//         }
// 
//         changesList.setText(sb.toString());
// 
//         // return completed view
//         return convertView;
//     }
// 
//     // make view not clickable
//     @Override
//     public boolean isEnabled(int position) {
//         return false;
//     }
// }
// 
// Path: java/com/raidzero/teamcitydownloader/data/AppRevision.java
// public class AppRevision {
//     private static final String tag = "AppRevision";
// 
//     private String versionName;
//     private String date;
//     private ArrayList<String> changes;
// 
//     public AppRevision(String versionName, String date, ArrayList<String> changes) {
//         this.versionName = versionName;
//         this.date = date;
//         this.changes = changes;
//     }
// 
//     public String getVersionName() {
//         return versionName;
//     }
// 
//     public String getDate() {
//         return date;
//     }
// 
//     public ArrayList<String> getChanges() {
//         return changes;
//     }
// }
// 
// Path: java/com/raidzero/teamcitydownloader/global/Debug.java
// public class Debug {
//     //private static final boolean debug = false;
//     //private static final boolean debug = true;
// 
//     private static final boolean debug = BuildConfig.DEBUG;
// 
//     public static void Log(String tag, String msg) {
//         if (debug) {
//             Log.d(tag, msg);
//         }
//     }
// 
//     public static void Log(String tag, String msg, Exception e) {
//         if (debug) {
//             Log.d(tag, msg);
//             e.printStackTrace();
//         }
//     }
// }
// 
// Path: java/com/raidzero/teamcitydownloader/global/TeamCityXmlParser.java
// public class TeamCityXmlParser {
//     private static final String tag = "TeamCityXmlParser";
// 
//     private Document doc;
// 
//     public TeamCityXmlParser(String xml) {
//         // parse this xml string into a Document
//         this.doc = parseXmlString(xml);
//     }
// 
//     private Document parseXmlString(String xml) {
//         try {
//             DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
//             InputSource is = new InputSource();
//             is.setCharacterStream(new StringReader(xml));
//             return db.parse(is);
//         } catch (Exception e) {
//             Debug.Log(tag, "Document error: ", e);
//         }
// 
//         return null;
//     }
// 
//     public NodeList getNodes(String elementName) {
//         NodeList nodes = doc.getElementsByTagName(elementName);
//         Debug.Log(tag, "getNodes(" + elementName + ") returning " + nodes.getLength() + " nodes.");
//         return nodes;
//     }
// 
//     public NodeList getNodes(Element element, String elementName) {
//         NodeList nodes = element.getElementsByTagName(elementName);
//         Debug.Log(tag, "getNodes(" + elementName + ") returning " + nodes.getLength() + " nodes.");
//         return nodes;
//     }
// 
//     public String getAttribute(Element element, String attribute) {
//         return element.getAttribute(attribute);
//     }
// 
// 
// }


// Path: java/com/raidzero/teamcitydownloader/fragments/WhatsNewFragment.java
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.raidzero.teamcitydownloader.R;
import com.raidzero.teamcitydownloader.adapters.AppRevisionAdapter;
import com.raidzero.teamcitydownloader.data.AppRevision;
import com.raidzero.teamcitydownloader.global.Debug;
import com.raidzero.teamcitydownloader.global.TeamCityXmlParser;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.io.InputStream;
import java.util.ArrayList;


        try {
            InputStream inputStream = getActivity().getAssets().open("whats_new.xml");

            // get size
            int size = inputStream.available();

            // make a byte buffer of this size
            byte[] buffer = new byte[size];

            // read the file into buffer
            inputStream.read(buffer);
            inputStream.close();

            xml = new String(buffer);

        } catch (Exception e) {
            // nothing
        }

        if (!xml.isEmpty()) {
            // start parsing
            TeamCityXmlParser parser = new TeamCityXmlParser(xml);

            // one root node
            NodeList rootList = parser.getNodes("whats-new");
            Element rootNode = (Element) rootList.item(0);

            NodeList revisions = parser.getNodes(rootNode, "revision");

            for (int i = 0; i < revisions.getLength(); i++) {