diff --git a/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/MeteoDataInfo.java b/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/MeteoDataInfo.java
index 97cc9f8d..2b13904a 100644
--- a/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/MeteoDataInfo.java
+++ b/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/MeteoDataInfo.java
@@ -480,6 +480,8 @@ public class MeteoDataInfo {
di = new ARLDataInfo();
} else if (CMARadarBaseDataInfo.class.getDeclaredConstructor().newInstance().canOpen(fileName)) {
di = new CMARadarBaseDataInfo();
+ } else {
+ di = MICAPSDataInfo.getDataInfo(raf);
}
raf.close();
} catch (IOException | NoSuchMethodException ex) {
diff --git a/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/grads/GrADSDataInfo.java b/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/grads/GrADSDataInfo.java
index f70af4a4..cf43448e 100644
--- a/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/grads/GrADSDataInfo.java
+++ b/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/grads/GrADSDataInfo.java
@@ -274,6 +274,7 @@ public class GrADSDataInfo extends DataInfo implements IGridDataInfo, IStationDa
public boolean isValidFile(RandomAccessFile raf) {
try {
+ raf.seek(0);
byte[] bytes = new byte[1000];
raf.read(bytes);
String line = new String(bytes).trim();
diff --git a/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/micaps/MICAPSDataInfo.java b/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/micaps/MICAPSDataInfo.java
index 28b31b4f..ae502d49 100644
--- a/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/micaps/MICAPSDataInfo.java
+++ b/meteoinfo-data/src/main/java/org/meteoinfo/data/meteodata/micaps/MICAPSDataInfo.java
@@ -14,13 +14,12 @@
package org.meteoinfo.data.meteodata.micaps;
import org.apache.commons.io.input.BOMInputStream;
+import org.meteoinfo.data.meteodata.DataInfo;
import org.meteoinfo.data.meteodata.MeteoDataType;
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStreamReader;
+import java.io.*;
+import java.util.RandomAccess;
+import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -107,6 +106,63 @@ public class MICAPSDataInfo {
return mdType;
}
+
+ /**
+ * Get MICAPS data info
+ *
+ * @param raf RandomAccessFile object
+ * @return Data info
+ */
+ public static DataInfo getDataInfo(RandomAccessFile raf) {
+ DataInfo dataInfo = null;
+ try {
+ raf.seek(0);
+ byte[] bytes = new byte[1000];
+ raf.read(bytes);
+ String line = new String(bytes).trim();
+ if (line.substring(0, 4).equals("mdfs")) {
+ dataInfo = new MDFSDataInfo();
+ } else {
+ StringTokenizer stoker = new StringTokenizer(line);
+ if (stoker.countTokens() >= 2) {
+ String dataType = stoker.nextToken() + " " + stoker.nextToken();
+ if (dataType.contains("diamond 1")) {
+ dataInfo = new MICAPS1DataInfo();
+ }
+ if (dataType.equals("diamond 2")) {
+ dataInfo = new MICAPS2DataInfo();
+ }
+ if (dataType.equals("diamond 3")) {
+ dataInfo = new MICAPS3DataInfo();
+ }
+ if (dataType.equals("diamond 4")) {
+ dataInfo = new MICAPS4DataInfo();
+ }
+ if (dataType.equals("diamond 7")) {
+ dataInfo = new MICAPS7DataInfo();
+ }
+ if (dataType.equals("diamond 11")) {
+ dataInfo = new MICAPS11DataInfo();
+ }
+ if (dataType.equals("diamond 13")) {
+ dataInfo = new MICAPS13DataInfo();
+ }
+ if (dataType.contains("iamond 120")) {
+ dataInfo = new MICAPS120DataInfo();
+ }
+ if (dataType.contains("diamond 131")) {
+ dataInfo = new MICAPS131DataInfo();
+ }
+ }
+ }
+ } catch (FileNotFoundException ex) {
+ Logger.getLogger(MICAPSDataInfo.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IOException ex) {
+ Logger.getLogger(MICAPSDataInfo.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ return dataInfo;
+ }
//
//
//
diff --git a/meteoinfo-lab/milconfig.xml b/meteoinfo-lab/milconfig.xml
index 397e6c86..f840a2a0 100644
--- a/meteoinfo-lab/milconfig.xml
+++ b/meteoinfo-lab/milconfig.xml
@@ -1,7 +1,6 @@
-
-
+
@@ -11,11 +10,12 @@
-
+
+