// Path: src/main/java/com/moss/ach/file/SimpleDateException.java
// @SuppressWarnings("serial")
// public class SimpleDateException extends Exception {
// 
// 	public SimpleDateException(String msg) {
// 		super(msg);
// 	}
// }
// 
// Path: src/main/java/com/moss/ach/file/SimpleTime.java
// public class SimpleTime {
// 
// 	int hours;
// 	int minutes;
// 	
// 	public SimpleTime(int hours, int minutes) throws SimpleTimeException {
// 		
// 		if (hours < 0 || hours > 23) {
// 			throw new SimpleTimeException("The hours value is invalid");
// 		}
// 		
// 		if (minutes < 0 || minutes > 59) {
// 			throw new SimpleTimeException("The minutes value is invalid");
// 		}
// 		
// 		this.hours = hours;
// 		this.minutes = minutes;
// 	}
// 
// 	public int getHours() {
// 		return hours;
// 	}
// 
// 	public int getMinutes() {
// 		return minutes;
// 	}
// 	
// 	public boolean equals(Object o) {
// 		return
// 			o != null
// 			&&
// 			o instanceof SimpleTime
// 			&&
// 			((SimpleTime)o).hours == hours
// 			&&
// 			((SimpleTime)o).minutes == minutes;
// 	}
// }
// 
// Path: src/main/java/com/moss/ach/file/SimpleTimeException.java
// @SuppressWarnings("serial")
// public class SimpleTimeException extends Exception {
// 
// 	public SimpleTimeException(String msg) {
// 		super(msg);
// 	}
// }


import com.moss.ach.file.SimpleTime;
import com.moss.ach.file.SimpleTimeException;
import com.moss.ach.file.SimpleDateException;
/**
 * Copyright (C) 2013, Moss Computing Inc.
 *
 * This file is part of ach.
 *
 * ach is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * ach is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with ach; see the file COPYING.  If not, write to the
 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301 USA.
 *
 * Linking this library statically or dynamically with other modules is
 * making a combined work based on this library.  Thus, the terms and
 * conditions of the GNU General Public License cover the whole
 * combination.
 *
 * As a special exception, the copyright holders of this library give you
 * permission to link this library with independent modules to produce an
 * executable, regardless of the license terms of these independent
 * modules, and to copy and distribute the resulting executable under
 * terms of your choice, provided that you also meet, for each linked
 * independent module, the terms and conditions of the license of that
 * module.  An independent module is a module which is not derived from
 * or based on this library.  If you modify this library, you may extend
 * this exception to your version of the library, but you are not
 * obligated to do so.  If you do not wish to do so, delete this
 * exception statement from your version.
 */
package com.moss.ach.file.format;


class FileCreationTimeField implements Field<SimpleTime> {
	
	public String getFormat() {
		return null;
	}

	public int getLength() {
		return 4;
	}

	public RequirementType getRequirementType() {
		return RequirementType.OPTIONAL;
	}

	public SimpleTime parse(char[] value) throws InvalidFormatException {
		
		String stringValue = new String(value);
		
		try {
			int hours = Integer.parseInt(stringValue.substring(0, 2));
			int minutes = Integer.parseInt(stringValue.substring(2, 4));

			return new SimpleTime(hours, minutes);
		}
		catch (NumberFormatException ex) {
			throw new InvalidFormatException(ex.getMessage());
		}
// Path: src/main/java/com/moss/ach/file/SimpleDateException.java
// @SuppressWarnings("serial")
// public class SimpleDateException extends Exception {
// 
// 	public SimpleDateException(String msg) {
// 		super(msg);
// 	}
// }
// 
// Path: src/main/java/com/moss/ach/file/SimpleTime.java
// public class SimpleTime {
// 
// 	int hours;
// 	int minutes;
// 	
// 	public SimpleTime(int hours, int minutes) throws SimpleTimeException {
// 		
// 		if (hours < 0 || hours > 23) {
// 			throw new SimpleTimeException("The hours value is invalid");
// 		}
// 		
// 		if (minutes < 0 || minutes > 59) {
// 			throw new SimpleTimeException("The minutes value is invalid");
// 		}
// 		
// 		this.hours = hours;
// 		this.minutes = minutes;
// 	}
// 
// 	public int getHours() {
// 		return hours;
// 	}
// 
// 	public int getMinutes() {
// 		return minutes;
// 	}
// 	
// 	public boolean equals(Object o) {
// 		return
// 			o != null
// 			&&
// 			o instanceof SimpleTime
// 			&&
// 			((SimpleTime)o).hours == hours
// 			&&
// 			((SimpleTime)o).minutes == minutes;
// 	}
// }
// 
// Path: src/main/java/com/moss/ach/file/SimpleTimeException.java
// @SuppressWarnings("serial")
// public class SimpleTimeException extends Exception {
// 
// 	public SimpleTimeException(String msg) {
// 		super(msg);
// 	}
// }


// Path: src/main/java/com/moss/ach/file/format/FileCreationTimeField.java
import com.moss.ach.file.SimpleTime;
import com.moss.ach.file.SimpleTimeException;
import com.moss.ach.file.SimpleDateException;

/**
 * Copyright (C) 2013, Moss Computing Inc.
 *
 * This file is part of ach.
 *
 * ach is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * ach is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with ach; see the file COPYING.  If not, write to the
 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301 USA.
 *
 * Linking this library statically or dynamically with other modules is
 * making a combined work based on this library.  Thus, the terms and
 * conditions of the GNU General Public License cover the whole
 * combination.
 *
 * As a special exception, the copyright holders of this library give you
 * permission to link this library with independent modules to produce an
 * executable, regardless of the license terms of these independent
 * modules, and to copy and distribute the resulting executable under
 * terms of your choice, provided that you also meet, for each linked
 * independent module, the terms and conditions of the license of that
 * module.  An independent module is a module which is not derived from
 * or based on this library.  If you modify this library, you may extend
 * this exception to your version of the library, but you are not
 * obligated to do so.  If you do not wish to do so, delete this
 * exception statement from your version.
 */
package com.moss.ach.file.format;


class FileCreationTimeField implements Field<SimpleTime> {
	
	public String getFormat() {
		return null;
	}

	public int getLength() {
		return 4;
	}

	public RequirementType getRequirementType() {
		return RequirementType.OPTIONAL;
	}

	public SimpleTime parse(char[] value) throws InvalidFormatException {
		
		String stringValue = new String(value);
		
		try {
			int hours = Integer.parseInt(stringValue.substring(0, 2));
			int minutes = Integer.parseInt(stringValue.substring(2, 4));

			return new SimpleTime(hours, minutes);
		}
		catch (NumberFormatException ex) {
			throw new InvalidFormatException(ex.getMessage());
		}
		catch (SimpleTimeException ex) {