Package net.geco.model.iocsv

Source Code of net.geco.model.iocsv.CourseIO

/**
* Copyright (c) 2009 Simon Denier
* Released under the MIT License (see LICENSE file)
*/
package net.geco.model.iocsv;

import java.util.Arrays;

import net.geco.model.Course;
import net.geco.model.Factory;
import net.geco.model.Registry;


/**
* @author Simon Denier
* @since Jan 4, 2009
*
*/
public class CourseIO extends AbstractIO<Course> {

  public static String orFilename() {
    return "Courses.csv"; //$NON-NLS-1$
  }

  public CourseIO(Factory factory, CsvReader reader, CsvWriter writer, Registry registry) {
    super(factory, reader, writer, registry);
  }

  @Override
  public Course importTData(String[] record) {   
    Course course = this.factory.createCourse();
    course.setName(record[0]);
    Float meterLength = new Float(record[1]) * 1000;
    course.setLength(meterLength.intValue());
    course.setClimb(new Integer(record[2]));
    int nbCodes;
    if( record.length<=12 ) {
      nbCodes = 0;
    } else {
      nbCodes = record.length - 12;
    }
    int[] codes = new int[nbCodes];
    for (int i = 0; i < codes.length; i++) {
      codes[i] = new Integer(record[i + 12]);
    };
    course.setCodes(codes);
    return course;
  }


  @Override
  public void register(Course data, Registry registry) {
    registry.addCourse(data);
  }

  @Override
  public String[] exportTData(Course c) {
    /*
     * course name, length, climb,
     * type, start code, finish code,
     * time limit, time penalty, default start time,
     * spare, spare, spare,
     * control codes....
     */
    String[] record = new String[] {
        c.getName(),
        new Float(c.getLength() / 1000.0).toString(),
        Integer.toString(c.getClimb()),
        "Cross Country", "1", "1001", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        "60", "10", "36000000", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        "", "", ""         //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    };
    int offset = record.length;
    int[] codes = c.getCodes();
    record = Arrays.copyOf(record, offset + codes.length);
    for (int i = 0; i < codes.length; i++) {
      record[i+offset] = Integer.toString(codes[i]);
    }
    return record;
  }

}
TOP

Related Classes of net.geco.model.iocsv.CourseIO

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.