Package com.l2client.model

Source Code of com.l2client.model.PartSet

package com.l2client.model;

import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;

import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.export.Savable;

public class PartSet implements Savable{
  String name;
  HashMap<String, PartSet> parts = new HashMap<String, PartSet>();
//  String detail = null;
  String[] partsArray;
  volatile int next = 0;
 
  /**
   * just for the savable
   */
  public PartSet(){
  }
 
  public PartSet(String name){
    this.name = name;
  }
 
  public String getName(){
    return name;
  }
 
  public void setPart(PartSet part){
    if(part != null){
      synchronized (parts) {
        parts.put(part.name, part);
        //FIXME there must be a better way than this!
        partsArray = parts.keySet().toArray(new String[0]);
      }
    }
  }
 
  public PartSet getPart(String id){
    PartSet ret = null;
    synchronized (parts) {
      ret = parts.get(id);
    }
    return ret;
  }
 
  public Collection<PartSet> getParts(){
    return parts.values();
  }
 
//  public String getDetail(){
//    return detail;
//  }
// 
//  public void setDetail(String in){
//    detail = in;
//  }
 
  public int getSize(){
    synchronized (parts) {
      return parts.size();
    }
  }

  @Override
    public void read(JmeImporter im) throws IOException {
        InputCapsule input = im.getCapsule(this);

        name = input.readString("name", "");

//        String[] keys = input.readStringArray("part_keys", null);
//        String[] values = input.readStringArray("part_values", null);
//       
//        if(keys != null && values != null &&(keys.length == values.length)){
//          partsArray = new String[keys.length][2];
//          for(int i=0; i<keys.length;i++){
//            parts.put(keys[i], values[i]);
//            partsArray[i][0]=keys[i];
//        partsArray[i][1]=values[i];
//          }
//        }
//        initialize();
    }

  @Override
    public void write(JmeExporter ex) throws IOException {
        OutputCapsule output = ex.getCapsule(this);
        output.write(name, "name", "");
//        output.write(parts.keySet().toArray(new String[0]), "part_keys", null);
//        output.write(parts.values().toArray(new String[0]), "part_values", null);
    }

  /**
   * After loading, get the next model in map (round robin)
   * @return
   */
  public String getNext() {
    int size;
    String ret = "";
    synchronized (parts) {
      size = parts.size();

      if (size <= 0)
        return ret;
      else if(size <= 1)
        return partsArray[0];
      else {

        if (next >= size) {
          next = 0;
        }
        ret = partsArray[next];
        next++;
      }
    }
    return ret;
  }
 
  /**
   * After loading, get a specific model in map
   * @return
   */
  public String get(int i) {
    int size;
    String ret = "";
    synchronized (parts) {
      size = parts.size();

      if (size <= 0 || i>=size)
        return ret;
      else if(size <= 1)
        return partsArray[0];
      else {
        ret = partsArray[i];
      }
    }
    return ret;
  }
  /**
   * post finish initialize to be overridden
   */
  public void initialize(){
  }
 
  @Override
  public String toString(){
    StringBuilder str = new StringBuilder();
    str.append(name).append("\n");
    synchronized (parts) {
//      str.append(parts.toString());
      for(PartSet p : parts.values()){
        str.append(" "+p.toString()+"\n");
      }
    }
//    if(detail != null){
//      str.append(" -> ");
//      str.append(detail);
//    }
    return str.toString();
  }
}
TOP

Related Classes of com.l2client.model.PartSet

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.