Package org.tcm1998.accat

Source Code of org.tcm1998.accat.OrderedItemCollection$Item

/**
* Filename  : OrderedItemCollection.java
* Created   : Sep 6, 2006 by Administrator
*/
package org.tcm1998.accat;

import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.StringTokenizer;

//import org.tcm1998.accat.BaseItemCollection.ItemDescription;
import org.tcm1998.accat.ItemFilter.FilterCriteria;
import org.tcm1998.utils.ResourceUtils;

/**
* @author Administrator
*
*/
public class OrderedItemCollection {
  private ArrayList m_groups;  // groupnames
  private ArrayList m_catagories;
  //private Item m_catagories[][];
  private ArrayList m_items;
  private HashMap m_baseIDByindex;
   
  private class Item{
    int itemID;
    int groupID;
    int catagoryID;
    boolean filtered;
  }

  public OrderedItemCollection(String listName, BaseItemCollection base){
    m_items=new ArrayList();
    m_baseIDByindex = new HashMap();
    LoadOrderedItemList(listName);
  }
 
  void LoadOrderedItemList (String listName){   
    m_groups = new ArrayList();
    m_catagories = new ArrayList();   
//    m_catagories = new Item[baseColl.GetNumberOfCatagories()][];
    int phase = 0;
    String line;
    BufferedReader buf_in = ResourceUtils.openResource(listName);
    try{
      if (buf_in != null){
        line = buf_in.readLine();
        while (line != null){
          line = line.trim();         
          if (line.length() != 0){
            if (line.equals("#"))
            {
              phase++;
            }
            else
            {
              switch (phase)
              {
              case 0
                m_groups.add(line);
                break;               
              case 1:
                m_catagories.add(line);
                break;
               
              case 2:
                Item item = LoadItem(line);
                m_baseIDByindex.put(new Integer(item.itemID), new Integer(m_items.size()));
                m_items.add(item);
                break;
              }             
            }           
          }
          line = buf_in.readLine();
        }
      }
    }
    catch (IOException e){     
    }
  }
 
  private Item LoadItem(String line){ 
    Item i = new Item();
    boolean bSkipComma = false;
    int iCounter = 0;
    String param;
    StringTokenizer st = new StringTokenizer(line,",",true); // include the tokens
    while (st.hasMoreTokens()){
      param = st.nextToken();
      param = param.trim();
      if (!param.equals(",")){ 
        if (param.length() > 0){ 
          switch (iCounter){
            case 0:
              i.itemID = Integer.parseInt(param);
              break;
            case 1:
              i.groupID = Integer.parseInt(param);
              break;
            case 2:
              i.catagoryID = Integer.parseInt(param);
              break;                   
            default:
              break;     
          }
        }
        iCounter++;
        bSkipComma = true;
      }
      else{
        if (!bSkipComma){
          iCounter++;
        }
        bSkipComma = false;       
      }
    }
    return i;
 
 
  public String[] GetCatagories()
  {
    String[] retVal = new String[m_catagories.size()];
    for (int i=0; i<retVal.length;i++)
    {
      retVal[i] = (String)m_catagories.get(i);
     
    }
    return retVal;
   
  }
 
  int GetBaseItemID (int number){   
    return ((Item)m_items.get(number)).itemID;   
  }
 
  int GetIndex (int id){
    return ((Integer)m_baseIDByindex.get(new Integer(id))).intValue();   
  }
 
  int GetCatagory (int id)
  {
    int index = GetIndex(id);
    int check_id = ((Item)m_items.get(index)).itemID;
    if (check_id != id)
    {
      index++;
    }
    return ((Item)m_items.get(index)).catagoryID-1;   
  }
 
  String GetCatagoryName (int id)
  {
    return ((String)m_catagories.get(GetCatagory(id)));   
  }
 
  public boolean IsFiltered(int number)
  {
    return ((Item)m_items.get(number)).filtered;   
  }
 
  int GetNumberOfItems()
  {
    return m_items.size();   
  }
 
  public String GetGroupName (int number){
    String retVal;
    int groupNr;
    if (m_groups == null){
      retVal="items";
    }
    else{
      groupNr = ((Item)m_items.get(number)).groupID;
      if (groupNr == -1){
        retVal = "items";
      }
      else{
        retVal = (String)m_groups.get(groupNr);
      }     
    }
    return retVal;
  }
 
  public void doFilter (ItemFilter oFilter)
  {
    FilterCriteria criteria = null;
    int iNumCrit = oFilter.getNumCriteria();
    if (iNumCrit > 0)
    {
      criteria = oFilter.getCriteria(0);
      initFilter (!criteria.negative, oFilter)
      for (int iCrit = 0; iCrit < iNumCrit; iCrit++)
      {
        criteria = oFilter.getCriteria(iCrit);
        switch (oFilter.getCriteriaId(criteria.type, true))
        {       
        case ItemFilter.CR_CAT:
          FilterCatagory (criteria.parameters[0], !criteria.negative);
          break;       
        }
      }     
    }   
  }
 
  public void initFilter (boolean bClear, ItemFilter oFilter
  {
    //boolean[] bUsedCrits = new boolean[m_catagories.size()];
    for (int iCrit = 0; iCrit < oFilter.getNumCriteria();iCrit++)
    {
      switch (oFilter.getCriteriaId(oFilter.getCriteria(iCrit).type,true))
      {
      case ItemFilter.CR_ORDERABLE:
//        for (int iCat = 0; iCat < m_catagories.size(); iCat++)
//        {
          //bUsedCrits[iCat] = true;
//        }
        break;
      case ItemFilter.CR_FENGSHUI:
        //bUsedCrits[0] = true;       
      case ItemFilter.CR_SEASON:
        //bUsedCrits[3] = true;     
      case ItemFilter.CR_PSEASON:
      case ItemFilter.CR_PTOD:
      case ItemFilter.CR_TOD:
//        bUsedCrits[9] = true;
//        bUsedCrits[10] = true;
        break;     
      }     
    }
     
    boolean bfiltered = bClear;
    for (int iItem = 0; iItem < m_items.size(); iItem++)
    {
      ((Item)m_items.get(iItem)).filtered = bfiltered;
    }       
  }
 
  public int FilterCatagory(int p_iSelection, boolean bAdd)
  {
    int total = 0;
    for (int item = 0; item < m_items.size();item++)
    {       
      if (((Item)m_items.get(item)).catagoryID == p_iSelection)
      {
        ((Item)m_items.get(item)).filtered = !bAdd; 
        total++;
      }
    } 
    return total;
  }
 
 
}
TOP

Related Classes of org.tcm1998.accat.OrderedItemCollection$Item

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.