/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2003-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.data.vpf.io;
import java.util.Map;
import org.geotools.data.vpf.ifc.VPFRow;
/**
* TableRow.java Created: Thu Jan 02 23:58:39 2003
*
* @author <a href="mailto:kobit@users.fs.net">Artur Hefczyc</a>
* @source $URL$
* @version 1.0
*/
public class TableRow implements VPFRow {
/**
* Describe variable <code>fieldsArr</code> here.
*
*/
private RowField[] fieldsArr = null;
/**
* Describe variable <code>fieldsMap</code> here.
*
*/
private Map fieldsMap = null;
/**
* Creates a new <code>TableRow</code> instance.
*
* @param fieldsArr a <code>RowField[]</code> value
* @param fieldsMap a <code>HashMap</code> value
*/
public TableRow(RowField[] fieldsArr, Map fieldsMap) {
this.fieldsArr = fieldsArr;
this.fieldsMap = fieldsMap;
}
// TableRow constructor
/**
* Describe <code>toString</code> method here.
*
* @return a <code>String</code> value
*/
public String toString() {
// StringBuffer buff = new StringBuffer(" ["+getClass().getName());
// buff.append(" (fieldsMap=");
// if (fieldsMap == null)
// {
// buff.append("null)");
// } // end of if (columnDefs == null)
// else
// {
// Iterator it = fieldsMap.entrySet().iterator();
// while (it.hasNext())
// {
// Map.Entry entry = (Map.Entry)it.next();
// buff.append("\n"+
// entry.getKey().toString()+"="+
// entry.getValue().toString());
// } // end of while (it.hasNext())
// buff.append("\n)");
// } // end of if (columnDefs == null) else
// buff.append("]");
StringBuffer buff = new StringBuffer();
if (fieldsMap == null) {
buff.append("null)");
} else {
for (int i = 0; i < fieldsArr.length; i++) {
buff.append(fieldsArr[i].toString() + ":");
}
buff.append(";");
}
return buff.toString();
}
/**
* Describe <code>fieldsCount</code> method here.
*
* @return an <code>int</code> value
*/
public int fieldsCount() {
return fieldsArr.length;
}
/**
* Describe <code>get</code> method here.
*
* @param name a <code>String</code> value
* @return a <code>RowField</code> value
*/
public RowField get(String name) {
return (RowField) fieldsMap.get(name);
}
/**
* Describe <code>get</code> method here.
*
* @param idx an <code>int</code> value
* @return a <code>RowField</code> value
*/
public RowField get(int idx) {
return fieldsArr[idx];
}
/**
* Describe <code>equals</code> method here.
*
* @param obj an <code>Object</code> value
* @return a <code>boolean</code> value
*/
public boolean equals(Object obj) {
if ((obj == null) || !(obj instanceof TableRow)) {
return false;
}
TableRow row = (TableRow) obj;
if ((fieldsArr == null) && (row.fieldsArr == null)) {
return true;
}
if ((fieldsArr == null) || (row.fieldsArr == null)) {
return false;
}
if (fieldsArr.length != row.fieldsArr.length) {
return false;
}
for (int i = 0; i < fieldsArr.length; i++) {
if (!fieldsArr[i].equals(row.fieldsArr[i])) {
return false;
}
}
return true;
}
public int hashCode() {
int code = 0;
if ((fieldsArr == null) || (fieldsArr.length == 0)) {
code = super.hashCode();
} else {
for (int i = 0; i < fieldsArr.length; i++) {
code += fieldsArr[i].hashCode();
}
}
return code;
}
}