/*
* Copyright 2008 FatWire Corporation. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package tools.gsf.facade.assetapi;
import COM.FutureTense.Interfaces.IList;
import com.fatwire.assetapi.data.AssetId;
import tools.gsf.facade.sql.AbstractIList;
import tools.gsf.facade.sql.IListIterable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* IList implementation that starts with a List{@literal<AssetId>} and exposes the rows as
* ASSETTYPE,ASSETID. The getter is case-insensitive, so assettype,assetid works too.
*
* @author Tony Field
* @see IListIterable
* @since Aug 13, 2010
*/
public class AssetIdIList extends AbstractIList {
public static final String ASSETTYPE = "ASSETTYPE";
public static final String ASSETID = "ASSETID";
/**
* Collection of AssetId objects
*/
protected List<AssetId> ids;
/**
* Construct a new IList taking the name and the data.
*
* @param name IList name
* @param ids asset ids.
*/
public AssetIdIList(String name, Collection<AssetId> ids) {
super(name);
this.ids = Collections.unmodifiableList(new ArrayList<AssetId>(ids));
}
public IList clone(String newname) {
List<AssetId> clone = new ArrayList<AssetId>(ids.size());
for (AssetId id : ids) {
clone.add(id);
}
return new AssetIdIList(newname, clone);
}
public void flush() {
ids = new ArrayList<AssetId>();
}
public int numColumns() {
return 2;
}
public String getColumnName(int i) throws ArrayIndexOutOfBoundsException {
if (i == 0) {
return ASSETTYPE;
}
if (i == 1) {
return ASSETID;
}
throw new ArrayIndexOutOfBoundsException(i);
}
public int numRows() {
return ids.size();
}
public String getValue(String s) throws NoSuchFieldException {
// ID is column 2 but will likely be called more often that type so
// check it first.
if (ASSETID.equalsIgnoreCase(s)) {
return Long.toString(ids.get(currentRow() - 1).getId());
}
if (ASSETTYPE.equalsIgnoreCase(s)) {
return ids.get(currentRow() - 1).getType();
}
throw new NoSuchFieldException(s);
}
public Object getObject(String s) throws NoSuchFieldException {
return getValue(s);
}
public byte[] getFileData(String s) throws IllegalArgumentException, NoSuchFieldException {
throw new IllegalArgumentException(s);
}
public String getFileString(String s) throws NoSuchFieldException {
throw new IllegalArgumentException(s);
}
public int numIndirectColumns() {
return 0;
}
public String getIndirectColumnName(int i) {
return null;
}
public boolean stringInList(String s) {
return false;
}
}