Package org.apache.myfaces.examples.crosstable

Source Code of org.apache.myfaces.examples.crosstable.DataBean$RowColumnKey

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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 org.apache.myfaces.examples.crosstable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.apache.myfaces.examples.listexample.SimpleCountry;
import org.apache.myfaces.examples.listexample.SimpleCountryList;

/**
* @author Mathias Broekelmann (latest modification by $Author: grantsmith $)
* @version $Revision: 472610 $ $Date: 2006-11-08 20:46:34 +0100 (Mi, 08 Nov 2006) $
*/
public class DataBean extends SimpleCountryList
{
  private DataModel mColumns;
  private DataModel mCountryDataModel;
  private Map mValueMap = new HashMap();
  private boolean mEditValues;
  private String mColumnLabel;

  /**
   *
   */
  public DataBean()
  {
    super();
  }

  public boolean isEditValues()
  {
    return mEditValues;
  }

  public String editValues()
  {
    mEditValues = true;
    return null;
  }

  public String saveValues()
  {
    mEditValues = false;
    return null;
  }

  public String addColumn()
  {
    if (mColumnLabel != null)
    {
      List columns = (List) getColumnDataModel().getWrappedData();
      columns.add(mColumnLabel);
    }
    return null;
  }

  public String removeColumn()
  {
    if (mColumns != null && mColumns.isRowAvailable())
    {
      Object column = mColumns.getRowData();
      List columns = (List) getColumnDataModel().getWrappedData();
      columns.remove(column);
    }
    return null;
  }

  public String getColumnLabel()
  {
    return mColumnLabel;
  }

  public void setColumnLabel(String label)
  {
    mColumnLabel = label;
  }

  public DataModel getCountryDataModel()
  {
    if (mCountryDataModel == null)
    {
      mCountryDataModel = new ListDataModel(getCountries());
    }
    return mCountryDataModel;
  }

  public DataModel getColumnDataModel()
  {
    if (mColumns == null)
    {
      String[] result = new String[] {"2002", "2003", "2004"};
      mColumns = new ListDataModel(new ArrayList(Arrays.asList(result)));
    }
    return mColumns;
  }

  public String getColumnValue()
  {
    DataModel countryDataModel = getCountryDataModel();
    if (countryDataModel.isRowAvailable())
    {
      SimpleCountry row = (SimpleCountry) countryDataModel.getRowData();
      DataModel columnDataModel = getColumnDataModel();
      if (columnDataModel.isRowAvailable())
      {
        Object column = columnDataModel.getRowData();
        Object key = new RowColumnKey(new Long(row.getId()), column);
        if (!mValueMap.containsKey(key))
        {
          // initialize with random value
          String randomValue = String.valueOf((int) (Math.random() * 5000) + 5000);
          mValueMap.put(key, randomValue);
        }
        return (String) mValueMap.get(key);
      }
    }
    return null;
  }

  public void setColumnValue(String value)
  {
    DataModel countryDataModel = getCountryDataModel();
    if (countryDataModel.isRowAvailable())
    {
      SimpleCountry row = (SimpleCountry) countryDataModel.getRowData();
      DataModel columnDataModel = getColumnDataModel();
      if (columnDataModel.isRowAvailable())
      {
        Object column = columnDataModel.getRowData();
        Object key = new RowColumnKey(new Long(row.getId()), column);
        mValueMap.put(key, value);
      }
    }
  }

  private class RowColumnKey
  {
    private final Object mRow;
    private final Object mColumn;

    /**
     * @param row
     * @param column
     */
    public RowColumnKey(Object row, Object column)
    {
      mRow = row;
      mColumn = column;
    }

    /**
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(Object obj)
    {
      if (obj == null)
      {
        return false;
      }
      if (obj == this)
      {
        return true;
      }
      if (obj instanceof RowColumnKey)
      {
        RowColumnKey other = (RowColumnKey) obj;
        return other.mRow.equals(mRow) && other.mColumn.equals(mColumn);
      }
      return super.equals(obj);
    }

    /**
     * @see java.lang.Object#hashCode()
     */
    public int hashCode()
    {
      return (37 * 3 + mRow.hashCode()) * (37 * 3 + mColumn.hashCode());
    }

    /**
     * @see java.lang.Object#toString()
     */
    public String toString()
    {
      return mRow.toString() + "," + mColumn.toString();
    }
  }
}

TOP

Related Classes of org.apache.myfaces.examples.crosstable.DataBean$RowColumnKey

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.