// Path: app/src/main/java/com/xargsgrep/portknocker/model/Host.java
// public class Host
// {
//     public static final int DEFAULT_DELAY = 1000;
//     public static final int DEFAULT_TCP_CONNECT_TIMEOUT = 100;
// 
//     private long id;
//     private String label;
//     private String hostname;
//     private int delay = DEFAULT_DELAY;
//     private int tcpConnectTimeout = DEFAULT_TCP_CONNECT_TIMEOUT;
//     private String launchIntentPackage;
//     private List<Port> ports = new ArrayList<>();
// 
//     @JsonIgnore
//     public long getId()
//     {
//         return id;
//     }
// 
//     public void setId(long id)
//     {
//         this.id = id;
//     }
// 
//     public String getLabel()
//     {
//         return label;
//     }
// 
//     public void setLabel(String label)
//     {
//         this.label = label;
//     }
// 
//     public String getHostname()
//     {
//         return hostname;
//     }
// 
//     public void setHostname(String hostname)
//     {
//         this.hostname = hostname;
//     }
// 
//     public int getDelay()
//     {
//         return delay;
//     }
// 
//     public void setDelay(int delay)
//     {
//         this.delay = delay;
//     }
// 
//     public String getLaunchIntentPackage()
//     {
//         return launchIntentPackage;
//     }
// 
//     public int getTcpConnectTimeout()
//     {
//         return tcpConnectTimeout;
//     }
// 
//     public void setTcpConnectTimeout(int tcpConnectTimeout)
//     {
//         this.tcpConnectTimeout = tcpConnectTimeout;
//     }
// 
//     public void setLaunchIntentPackage(String launchIntentPackage)
//     {
//         this.launchIntentPackage = launchIntentPackage;
//     }
// 
//     public List<Port> getPorts()
//     {
//         return ports;
//     }
// 
//     public void setPorts(List<Port> ports)
//     {
//         this.ports = ports;
//     }
// 
//     @JsonIgnore
//     public String getPortsString()
//     {
//         StringBuilder portsString = new StringBuilder();
// 
//         if (ports.size() > 0)
//         {
//             for (Port port : ports)
//             {
//                 portsString.append(port.getPort());
//                 portsString.append(":");
//                 portsString.append(port.getProtocol());
//                 portsString.append(", ");
//             }
//             portsString.replace(portsString.length() - 2, portsString.length(), "");
//         }
// 
//         return portsString.toString();
//     }
// }


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;
import com.xargsgrep.portknocker.model.Host;
                "create table %s (" +
                        "   %s integer not null," +
                        "   %s integer not null," +
                        "   %s integer not null," +
                        "   %s integer not null" +
                        ");";
        createPortTableSQL = String.format(
                createPortTableSQL,
                PORT_TABLE_NAME,
                PORT_HOST_ID_COLUMN,
                PORT_INDEX_COLUMN,
                PORT_PORT_COLUMN,
                PORT_PROTOCOL_COLUMN
        );

        db.execSQL(createHostTableSQL);
        db.execSQL(createPortTableSQL);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        Log.d(TAG, "Upgrading database from version " + oldVersion + " to version " + newVersion);
        switch (newVersion)
        {
            case DATABASE_VERSION:
                db.execSQL(String.format(
                        "alter table %s add column %s integer not null default %d;",
                        HOST_TABLE_NAME,
                        HOST_TCP_CONNECT_TIMEOUT_COLUMN,
// Path: app/src/main/java/com/xargsgrep/portknocker/model/Host.java
// public class Host
// {
//     public static final int DEFAULT_DELAY = 1000;
//     public static final int DEFAULT_TCP_CONNECT_TIMEOUT = 100;
// 
//     private long id;
//     private String label;
//     private String hostname;
//     private int delay = DEFAULT_DELAY;
//     private int tcpConnectTimeout = DEFAULT_TCP_CONNECT_TIMEOUT;
//     private String launchIntentPackage;
//     private List<Port> ports = new ArrayList<>();
// 
//     @JsonIgnore
//     public long getId()
//     {
//         return id;
//     }
// 
//     public void setId(long id)
//     {
//         this.id = id;
//     }
// 
//     public String getLabel()
//     {
//         return label;
//     }
// 
//     public void setLabel(String label)
//     {
//         this.label = label;
//     }
// 
//     public String getHostname()
//     {
//         return hostname;
//     }
// 
//     public void setHostname(String hostname)
//     {
//         this.hostname = hostname;
//     }
// 
//     public int getDelay()
//     {
//         return delay;
//     }
// 
//     public void setDelay(int delay)
//     {
//         this.delay = delay;
//     }
// 
//     public String getLaunchIntentPackage()
//     {
//         return launchIntentPackage;
//     }
// 
//     public int getTcpConnectTimeout()
//     {
//         return tcpConnectTimeout;
//     }
// 
//     public void setTcpConnectTimeout(int tcpConnectTimeout)
//     {
//         this.tcpConnectTimeout = tcpConnectTimeout;
//     }
// 
//     public void setLaunchIntentPackage(String launchIntentPackage)
//     {
//         this.launchIntentPackage = launchIntentPackage;
//     }
// 
//     public List<Port> getPorts()
//     {
//         return ports;
//     }
// 
//     public void setPorts(List<Port> ports)
//     {
//         this.ports = ports;
//     }
// 
//     @JsonIgnore
//     public String getPortsString()
//     {
//         StringBuilder portsString = new StringBuilder();
// 
//         if (ports.size() > 0)
//         {
//             for (Port port : ports)
//             {
//                 portsString.append(port.getPort());
//                 portsString.append(":");
//                 portsString.append(port.getProtocol());
//                 portsString.append(", ");
//             }
//             portsString.replace(portsString.length() - 2, portsString.length(), "");
//         }
// 
//         return portsString.toString();
//     }
// }


// Path: app/src/main/java/com/xargsgrep/portknocker/db/DatabaseHelper.java
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;
import com.xargsgrep.portknocker.model.Host;

                "create table %s (" +
                        "   %s integer not null," +
                        "   %s integer not null," +
                        "   %s integer not null," +
                        "   %s integer not null" +
                        ");";
        createPortTableSQL = String.format(
                createPortTableSQL,
                PORT_TABLE_NAME,
                PORT_HOST_ID_COLUMN,
                PORT_INDEX_COLUMN,
                PORT_PORT_COLUMN,
                PORT_PROTOCOL_COLUMN
        );

        db.execSQL(createHostTableSQL);
        db.execSQL(createPortTableSQL);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        Log.d(TAG, "Upgrading database from version " + oldVersion + " to version " + newVersion);
        switch (newVersion)
        {
            case DATABASE_VERSION:
                db.execSQL(String.format(
                        "alter table %s add column %s integer not null default %d;",
                        HOST_TABLE_NAME,
                        HOST_TCP_CONNECT_TIMEOUT_COLUMN,
                        Host.DEFAULT_TCP_CONNECT_TIMEOUT