/*
* Copyright (c) 2017 OBiBa. All rights reserved.
*
* This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.obiba.magma.datasource.csv;
import java.io.File;
import java.util.Date;
import javax.annotation.Nullable;
import javax.validation.constraints.NotNull;
import org.obiba.magma.Timestamps;
import org.obiba.magma.Value;
import org.obiba.magma.type.DateTimeType;
public class CsvTimestamps implements Timestamps {
@Nullable
private final File variableFile;
@Nullable
private final File dataFile;
public CsvTimestamps(@Nullable File variableFile, @Nullable File dataFile) {
this.variableFile = variableFile;
this.dataFile = dataFile;
}
@NotNull
@Override
public Value getCreated() {
// Not currently possible to read a file creation timestamp. Coming in JDK 7 NIO.
return DateTimeType.get().nullValue();
}
@NotNull
@Override
public Value getLastUpdate() {
Date variablesFileLastUpdated = variableFile == null ? null : new Date(variableFile.lastModified());
Date dataFileLastUpdated = dataFile == null ? null : new Date(dataFile.lastModified());
if(variablesFileLastUpdated != null && dataFileLastUpdated != null) {
return DateTimeType.get().valueOf(
variablesFileLastUpdated.after(dataFileLastUpdated) ? variablesFileLastUpdated : dataFileLastUpdated);
}
if(variablesFileLastUpdated == null && dataFileLastUpdated == null) {
return DateTimeType.get().nullValue();
}
if(variablesFileLastUpdated != null) {
return DateTimeType.get().valueOf(variablesFileLastUpdated);
}
return DateTimeType.get().valueOf(dataFileLastUpdated);
}
}