CharacterAttributeWrapper.java :  » Game » joverseer » org » joverseer » tools » infoCollectors » characters » Java Open Source

Java Open Source » Game » joverseer 
joverseer » org » joverseer » tools » infoCollectors » characters » CharacterAttributeWrapper.java
package org.joverseer.tools.infoCollectors.characters;

import org.joverseer.support.infoSources.DerivedFromArmyInfoSource;
import org.joverseer.support.infoSources.DerivedFromTitleInfoSource;
import org.joverseer.support.infoSources.InfoSource;
import org.joverseer.support.infoSources.RumorActionInfoSource;

/**
 * Wraps information about a character attribute.
 * 
 * Each character attribute has: - a value - a total value (modified by arties),
 * if applicable - a name - an information source that tells us how it was
 * derived (e.g. xml turn, title, rumor, etc)
 * 
 * @author Marios Skounakis
 * 
 */
public class CharacterAttributeWrapper implements Comparable<CharacterAttributeWrapper> {
  public static int COMPARE_BY_TOTAL_VALUE = 1;
  public static int COMPARE_BY_NET_VALUE = 2;
  public static int COMPARIZON_MODE = COMPARE_BY_TOTAL_VALUE;

  String attribute;

  InfoSource infoSource;

  Object value;

  Object totalValue;

  int turnNo;

  public CharacterAttributeWrapper(String attribute, Object value, int turnNo, InfoSource infoSource) {
    this.attribute = attribute;
    this.value = value;
    this.turnNo = turnNo;
    this.infoSource = infoSource;
  }

  public CharacterAttributeWrapper(String attribute, Object value, Object totalValue, int turnNo, InfoSource infoSource) {
    this.attribute = attribute;
    this.value = value;
    this.turnNo = turnNo;
    this.infoSource = infoSource;
    this.totalValue = totalValue;
  }

  public InfoSource getInfoSource() {
    return infoSource;
  }

  public void setInfoSource(InfoSource infoSource) {
    this.infoSource = infoSource;
  }

  public String getAttribute() {
    return attribute;
  }

  public void setAttribute(String attribute) {
    this.attribute = attribute;
  }

  public Object getValue() {
    return value;
  }

  public void setValue(Object value) {
    this.value = value;
  }

  public int getTurnNo() {
    return turnNo;
  }

  public void setTurnNo(int turnNo) {
    this.turnNo = turnNo;
  }

  public Object getTotalValue() {
    return totalValue;
  }

  public void setTotalValue(Object totalValue) {
    this.totalValue = totalValue;
  }

  @SuppressWarnings("unchecked")
  public int compareTo(CharacterAttributeWrapper caw) {
    if (caw == null)
      return 1;
    if (COMPARIZON_MODE == COMPARE_BY_TOTAL_VALUE) {
      Object v1 = getTotalValue();
      Object v2 = caw.getTotalValue();
      if (v1 == null && v2 != null)
        return -1;
      if (v1 != null && v2 == null)
        return 1;
      if (v1 != null && v2 != null) {
        return ((Comparable) v1).compareTo(v2);
      }
    }
    Object v1 = getValue();
    Object v2 = caw.getValue();
    if (v1 == null && v2 != null)
      return -1;
    if (v1 != null && v2 == null)
      return 1;
    if (v1 != null && v2 != null) {
      return ((Comparable) v1).compareTo(v2);
    }
    return 0;
  }

  @Override
  public String toString() {
    String v = getValue() == null ? "" : getValue().toString();
    InfoSource is = getInfoSource();
    if (DerivedFromTitleInfoSource.class.isInstance(is)) {
      v += "+";
    } else if (RumorActionInfoSource.class.isInstance(is)) {
      v += "+";
    } else if (DerivedFromArmyInfoSource.class.isInstance(is)) {
      v += "+";
    }

    if (getTotalValue() != null) {
      if (!getTotalValue().toString().equals(getValue().toString()) && !getTotalValue().toString().equals("0")) {
        v += "(" + getTotalValue().toString() + ")";
      }
    }
    return v;
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.