private void readCharValues() { int count = 0; ArrayChar data; try { data = (ArrayChar) read(); } catch (IOException ioe) { log.error("Error reading char coordinate values ", ioe); throw new IllegalStateException(ioe); } ArrayChar.StringIterator iter = data.getStringIterator(); names = new String[iter.getNumElems()]; while (iter.hasNext()) names[count++] = iter.next(); }
@org.junit.Test public void testReadH5StringArray() throws IOException { try (NetcdfFile ncfile = TestH5.openH5("support/dstrarr.h5")) { Variable v = null; assert (null != (v = ncfile.findVariable("strdata"))); assert (v.getRank() == 3); assert (v.getDataType() == DataType.CHAR); int[] shape = v.getShape(); assert (shape[0] == 2); assert (shape[1] == 2); assert (shape[2] == 5); // read entire array Array A; try { A = v.read(); } catch (IOException e) { System.err.println("ERROR reading file"); assert (false); return; } assert (A.getRank() == 3); assert (A instanceof ArrayChar); ArrayChar ca = (ArrayChar) A; ArrayChar.StringIterator siter = ca.getStringIterator(); assert (siter.next().equals("test ")); assert (siter.next().equals("left ")); assert (siter.next().equals("call ")); assert (siter.next().equals("mesh ")); } }
static void printStringArray(PrintStream out, ArrayChar ma, Indent indent, ucar.nc2.util.CancelTask ct) { if (ct != null && ct.isCancel()) return; int rank = ma.getRank(); if (rank == 1) { out.print( " \""+ma.getString()+"\""); return; } if (rank == 2) { boolean first = true; for (ArrayChar.StringIterator iter = ma.getStringIterator(); iter.hasNext(); ) { if (!first) out.print(", "); out.print( "\""+iter.next()+"\""); first = false; if (ct != null && ct.isCancel()) return; } return; } int [] dims = ma.getShape(); int last = dims[0]; out.print("\n" + indent + "{"); indent.incr(); for(int ii = 0; ii < last; ii++) { ArrayChar slice = (ArrayChar) ma.slice(0, ii); printStringArray(out, slice, indent, ct); if(ii != last-1) out.print(","); if (ct != null && ct.isCancel()) return; } indent.decr(); out.print("\n"+indent + "}"); }
static void printStringArray(PrintStream out, ArrayChar ma, Indent indent, ucar.nc2.util.CancelTask ct) { if (ct != null && ct.isCancel()) return; int rank = ma.getRank(); if (rank == 1) { out.print( " \""+ma.getString()+"\""); return; } if (rank == 2) { boolean first = true; for (ArrayChar.StringIterator iter = ma.getStringIterator(); iter.hasNext(); ) { if (!first) out.print(", "); out.print( "\""+iter.next()+"\""); first = false; if (ct != null && ct.isCancel()) return; } return; } int [] dims = ma.getShape(); int last = dims[0]; out.print("\n" + indent + "{"); indent.incr(); for(int ii = 0; ii < last; ii++) { ArrayChar slice = (ArrayChar) ma.slice(0, ii); printStringArray(out, slice, indent, ct); if(ii != last-1) out.print(","); if (ct != null && ct.isCancel()) return; } indent.decr(); out.print("\n"+indent + "}"); }
public String[] getJavaArrayString(StructureMembers.Member m) { if (m.getDataType() == DataType.STRING) { Array data = getArray(m); int n = m.getSize(); String[] result = new String[n]; for (int i = 0; i < result.length; i++) result[i] = (String) data.getObject(i); return result; } else if (m.getDataType() == DataType.CHAR) { ArrayChar data = (ArrayChar) getArray(m); ArrayChar.StringIterator iter = data.getStringIterator(); String[] result = new String[iter.getNumElems()]; int count = 0; while (iter.hasNext()) result[count++] = iter.next(); return result; } throw new IllegalArgumentException("getJavaArrayString: not String DataType :" + m.getDataType()); }
public String[] getJavaArrayString(StructureMembers.Member m) { if (m.getDataType() == DataType.STRING) { Array data = getArray(m); int n = m.getSize(); String[] result = new String[n]; for (int i = 0; i < result.length; i++) result[i] = (String) data.getObject(i); return result; } else if (m.getDataType() == DataType.CHAR) { ArrayChar data = (ArrayChar) getArray(m); ArrayChar.StringIterator iter = data.getStringIterator(); String[] result = new String[ iter.getNumElems()]; int count = 0; while (iter.hasNext()) result[count++] = iter.next(); return result; } throw new IllegalArgumentException("getJavaArrayString: not String DataType :"+m.getDataType()); }
public String[] getJavaArrayString(StructureMembers.Member m) { if (m.getDataType() == DataType.STRING) { Array data = getArray(m); int n = m.getSize(); String[] result = new String[n]; for (int i = 0; i < result.length; i++) result[i] = (String) data.getObject(i); return result; } else if (m.getDataType() == DataType.CHAR) { ArrayChar data = (ArrayChar) getArray(m); ArrayChar.StringIterator iter = data.getStringIterator(); String[] result = new String[ iter.getNumElems()]; int count = 0; while (iter.hasNext()) result[count++] = iter.next(); return result; } throw new IllegalArgumentException("getJavaArrayString: not String DataType :"+m.getDataType()); }
public String[] getJavaArrayString(StructureMembers.Member m) { if (m.getDataType() == DataType.STRING) { Array data = getArray(m); int n = m.getSize(); String[] result = new String[n]; for (int i = 0; i < result.length; i++) result[i] = (String) data.getObject(i); return result; } else if (m.getDataType() == DataType.CHAR) { ArrayChar data = (ArrayChar) getArray(m); ArrayChar.StringIterator iter = data.getStringIterator(); String[] result = new String[iter.getNumElems()]; int count = 0; while (iter.hasNext()) result[count++] = iter.next(); return result; } throw new IllegalArgumentException("getJavaArrayString: not String DataType :" + m.getDataType()); }