/*******************************************************************************
* Copyright © 2012, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.edt.java.jtopen.access;
import java.util.Calendar;
import java.util.TimeZone;
import org.eclipse.edt.javart.util.DateTimeUtil;
import org.eclipse.edt.runtime.java.eglx.lang.ETime;
import eglx.jtopen.IBMiConnection;
public class AS400Time extends com.ibm.as400.access.AS400Time {
private static final long serialVersionUID = 1L;
public AS400Time(TimeZone tz) {
super(tz);
}
public AS400Time(Integer ibmiFormat, String seperator, String timeZoneID, IBMiConnection conn) {
this(AS400DateTimeUtil.getIBMiTimezone(timeZoneID, conn));
if(ibmiFormat == null){
ibmiFormat = conn.getDateFormat();
}
seperator = AS400DateTimeUtil.getConnSeparator(seperator, conn);
if(ibmiFormat != null && seperator != null && seperator.isEmpty()){
setFormat(ibmiFormat.intValue());
}
else if(ibmiFormat != null){
Character seperatorChar = seperator == null ? null : Character.valueOf(seperator.charAt(0));
setFormat(ibmiFormat.intValue(), seperatorChar);
}
}
@Override
public byte[] toBytes(Object object) {
if(object instanceof Calendar){
object = new java.sql.Time(((Calendar)object).getTimeInMillis());
}
return super.toBytes(object);
}
@Override
public int toBytes(Object object, byte[] bytes) {
if(object instanceof Calendar){
object = new java.sql.Time(((Calendar)object).getTimeInMillis());
}
return super.toBytes(object, bytes);
}
@Override
public int toBytes(Object object, byte[] bytes, int offset) {
if(object instanceof Calendar){
object = new java.sql.Time(((Calendar)object).getTimeInMillis());
}
return super.toBytes(object, bytes, offset);
}
@Override
public Object toObject(byte[] arg0) {
Object obj = super.toObject(arg0);
return convert(obj);
}
@Override
public Object toObject(byte[] arg0, int arg1) {
Object obj = super.toObject(arg0, arg1);
return convert(obj);
}
private Object convert(Object obj) {
if(obj instanceof Calendar){
return ETime.asTime((Calendar)obj);
}
else if(obj instanceof java.sql.Time){
return ETime.asTime(DateTimeUtil.getNewCalendar((java.sql.Time)obj));
}
else if(obj instanceof java.util.Date){
return ETime.asTime(DateTimeUtil.getNewCalendar((java.util.Date)obj));
}
return obj;
}
}