// Path: app/src/main/java/com/xargsgrep/portknocker/model/Port.java
// public class Port
// {
//     private long hostId;
//     private int index;
//     private int port = -1;
//     private Protocol protocol = Protocol.TCP;
// 
//     public static enum Protocol {TCP, UDP}
// 
//     public Port() { }
// 
//     @JsonIgnore
//     public long getHostId()
//     {
//         return hostId;
//     }
// 
//     public void setHostId(long hostId)
//     {
//         this.hostId = hostId;
//     }
// 
//     @JsonIgnore
//     public int getIndex()
//     {
//         return index;
//     }
// 
//     public void setIndex(int index)
//     {
//         this.index = index;
//     }
// 
//     public int getPort()
//     {
//         return port;
//     }
// 
//     public void setPort(int port)
//     {
//         this.port = port;
//     }
// 
//     public Protocol getProtocol()
//     {
//         return protocol;
//     }
// 
//     public void setProtocol(Protocol protocol)
//     {
//         this.protocol = protocol;
//     }
// }
// 
// Path: app/src/main/java/com/xargsgrep/portknocker/model/Port.java
// public static enum Protocol {TCP, UDP}
// 
// Path: app/src/main/java/com/xargsgrep/portknocker/utils/StringUtils.java
// public class StringUtils
// {
//     public static boolean contains(String stringToCheck, String str)
//     {
//         return (stringToCheck == null) ? false : stringToCheck.contains(str);
//     }
// 
//     // String.isEmpty only available starting API 9
//     public static boolean isEmpty(String str)
//     {
//         return (str == null || str.length() == 0);
//     }
// 
//     public static boolean isBlank(String str)
//     {
//         return (str == null || isEmpty(str.trim()));
//     }
// 
//     public static boolean isNotBlank(String str)
//     {
//         return !isBlank(str);
//     }
// }


import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.Toast;
import com.xargsgrep.portknocker.R;
import com.xargsgrep.portknocker.model.Port;
import com.xargsgrep.portknocker.model.Port.Protocol;
import com.xargsgrep.portknocker.utils.StringUtils;
import java.util.List;
        this.ports = ports;
    }

    @Override
    public int getCount()
    {
        return ports.size();
    }

    @Override
    public Port getItem(int position)
    {
        return ports.get(position);
    }

    public List<Port> getPorts()
    {
        return ports;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        View view = convertView;
        if (view == null) view = LayoutInflater.from(getContext()).inflate(R.layout.port_row, null);

        EditText portView = (EditText) view.findViewById(R.id.port_row_port);
        Spinner protocolSpinner = (Spinner) view.findViewById(R.id.port_row_protocol);
        ImageButton deleteButton = (ImageButton) view.findViewById(R.id.port_row_delete);

// Path: app/src/main/java/com/xargsgrep/portknocker/model/Port.java
// public class Port
// {
//     private long hostId;
//     private int index;
//     private int port = -1;
//     private Protocol protocol = Protocol.TCP;
// 
//     public static enum Protocol {TCP, UDP}
// 
//     public Port() { }
// 
//     @JsonIgnore
//     public long getHostId()
//     {
//         return hostId;
//     }
// 
//     public void setHostId(long hostId)
//     {
//         this.hostId = hostId;
//     }
// 
//     @JsonIgnore
//     public int getIndex()
//     {
//         return index;
//     }
// 
//     public void setIndex(int index)
//     {
//         this.index = index;
//     }
// 
//     public int getPort()
//     {
//         return port;
//     }
// 
//     public void setPort(int port)
//     {
//         this.port = port;
//     }
// 
//     public Protocol getProtocol()
//     {
//         return protocol;
//     }
// 
//     public void setProtocol(Protocol protocol)
//     {
//         this.protocol = protocol;
//     }
// }
// 
// Path: app/src/main/java/com/xargsgrep/portknocker/model/Port.java
// public static enum Protocol {TCP, UDP}
// 
// Path: app/src/main/java/com/xargsgrep/portknocker/utils/StringUtils.java
// public class StringUtils
// {
//     public static boolean contains(String stringToCheck, String str)
//     {
//         return (stringToCheck == null) ? false : stringToCheck.contains(str);
//     }
// 
//     // String.isEmpty only available starting API 9
//     public static boolean isEmpty(String str)
//     {
//         return (str == null || str.length() == 0);
//     }
// 
//     public static boolean isBlank(String str)
//     {
//         return (str == null || isEmpty(str.trim()));
//     }
// 
//     public static boolean isNotBlank(String str)
//     {
//         return !isBlank(str);
//     }
// }


// Path: app/src/main/java/com/xargsgrep/portknocker/adapter/PortArrayAdapter.java
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.Toast;
import com.xargsgrep.portknocker.R;
import com.xargsgrep.portknocker.model.Port;
import com.xargsgrep.portknocker.model.Port.Protocol;
import com.xargsgrep.portknocker.utils.StringUtils;
import java.util.List;

        this.ports = ports;
    }

    @Override
    public int getCount()
    {
        return ports.size();
    }

    @Override
    public Port getItem(int position)
    {
        return ports.get(position);
    }

    public List<Port> getPorts()
    {
        return ports;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        View view = convertView;
        if (view == null) view = LayoutInflater.from(getContext()).inflate(R.layout.port_row, null);

        EditText portView = (EditText) view.findViewById(R.id.port_row_port);
        Spinner protocolSpinner = (Spinner) view.findViewById(R.id.port_row_protocol);
        ImageButton deleteButton = (ImageButton) view.findViewById(R.id.port_row_delete);

        ArrayAdapter<Protocol> protocolAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, Protocol.values());