/* * Copyright 1998-2009 University Corporation for Atmospheric Research/Unidata * * Portions of this software were developed by the Unidata Program at the * University Corporation for Atmospheric Research. * * Access and use of this software shall impose the following obligations * and understandings on the user. The user is granted the right, without * any fee or cost, to use, copy, modify, alter, enhance and distribute * this software, and any derivative works thereof, and its supporting * documentation for any purpose whatsoever, provided that this entire * notice appears in all copies of the software, derivative works and * supporting documentation. Further, UCAR requests that the user credit * UCAR/Unidata in any publications that result from the use of this * software or in any product that includes this software. The names UCAR * and/or Unidata, however, may not be used in any advertising or publicity * to endorse or promote any products or commercial entity unless specific * written permission is obtained from UCAR/Unidata. The user also * understands that UCAR/Unidata is not obligated to provide the user with * any support, consulting, training or assistance of any kind with regard * to the use, operation and performance of this software nor to provide * the user with any updates, revisions, new versions or "bug fixes." * * THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. */ // $Id: TestRealTimeUpdate.java 51 2006-07-12 17:13:13Z caron $ package ucar.nc2.dt.trajectory; import org.junit.Test; import static org.junit.Assert.*; import ucar.nc2.NetcdfFile; import ucar.nc2.Dimension; import ucar.nc2.Variable; import ucar.nc2.Attribute; import ucar.nc2.constants.FeatureType; import ucar.nc2.dt.TrajectoryObsDataset; import ucar.nc2.dt.TrajectoryObsDatatype; import ucar.nc2.dt.TypedDatasetFactory; import ucar.ma2.Array; import java.io.IOException; import java.util.Date; /** * @author edavis * @since Feb 7, 2006 10:10:45 AM */ public class TestRealTimeUpdate { private String testDataFileOut = "test.TrajectoryRealTimeUpdate.tmp.nc"; /** * Test ... */ //@Test public void testMuckWithNcfSynchExtend() { NetcdfFile ncf = null; try { ncf = NetcdfFile.open( testDataFileOut ); } catch ( IOException e ) { assertTrue( "Couldn't open file <" + testDataFileOut + ">: " + e.getMessage(), false ); return; } Dimension timeDim = ncf.getRootGroup().findDimension( "time"); int timeDimSize = timeDim.getLength(); Variable timeVar = ncf.getRootGroup().findVariable( "time"); Variable latVar = ncf.getRootGroup().findVariable( "latitude"); Variable lonVar = ncf.getRootGroup().findVariable( "longitude"); Variable altVar = ncf.getRootGroup().findVariable( "altitude"); Attribute timeUnits = timeVar.findAttribute( "units"); String newUnits = "test unit string"; System.out.println( "Switching time units from \"" + timeUnits.toString() + " \" to \"" + newUnits + "\"" ); timeVar.addAttribute( new Attribute( "units", newUnits) ); Array latArray; try { latArray = latVar.read(); } catch ( IOException e ) { assertTrue( "Couldn't read latitude data: " + e.getMessage(), false ); return; } try { Thread.sleep( 5000); } catch ( InterruptedException e ) { } boolean extended; try { extended = ncf.syncExtend(); } catch ( IOException e ) { assertTrue( "Couldn't syncExtend() file <" + testDataFileOut + ">: " + e.getMessage(), false ); return; } if ( ! extended ) { System.out.println( "Did not extend file <" + testDataFileOut + ">." ); } Dimension timeDim2 = ncf.getRootGroup().findDimension( "time"); if ( timeDim == timeDim2 ) System.out.println( "Time dimension the same." ); else System.out.println( "Time dimension not the same." ); System.out.println( "Initial time dim size = " + timeDimSize ); System.out.println( "New time dim size = " + timeDim2.getLength() ); System.out.println( "New time dim size (1) = " + timeDim.getLength() ); System.out.println( "Time var units string: " + timeVar.findAttribute( "units").toString() ); if ( latVar == ncf.getRootGroup().findVariable( "latitude")) System.out.println( "Lat var the same." ); else System.out.println( "Lat var not the same." ); } //@Test public void testTwo() { TrajectoryObsDataset trajDs; try { //trajDs = TrajectoryObsDatasetFactory.open( testDataFileOut ); StringBuilder errlog = new StringBuilder(); trajDs = (TrajectoryObsDataset) TypedDatasetFactory.open(FeatureType.TRAJECTORY, testDataFileOut, null, errlog); } catch ( IOException e ) { assertTrue( "Couldn't open TrajectoryObsDataset <" + testDataFileOut + ">: " + e.getMessage(), false ); return; } Date startDate = trajDs.getStartDate(); Date endDate = trajDs.getEndDate(); System.out.println( "Dataset start date=" + startDate ); System.out.println( "Dataset end date =" + endDate ); TrajectoryObsDatatype traj = trajDs.getTrajectory( "trajectory data"); Date trajEndDate; Array presArray; try { trajEndDate = traj.getTime( traj.getNumberPoints() - 1); presArray = traj.getData( traj.getNumberPoints() - 1, "HADS_A"); } catch ( IOException e ) { assertTrue( "Failed to read last time or pressure from <" + testDataFileOut + ">: " + e.getMessage(), false ); return; } System.out.println( "Traj end date =" + trajEndDate ); System.out.println( "Pressure end value=" + presArray.getFloat( presArray.getIndex())); try { Thread.sleep( 10000 ); } catch ( InterruptedException e ) { } if ( ! trajDs.syncExtend() ) System.out.println( "File not extended." ); else System.out.println( "File extended" ); startDate = trajDs.getStartDate(); endDate = trajDs.getEndDate(); System.out.println( "Start date=" + startDate ); System.out.println( "End date =" + endDate ); try { trajEndDate = traj.getTime( traj.getNumberPoints() - 1 ); presArray = traj.getData( traj.getNumberPoints() - 1, "HADS_A" ); } catch ( IOException e ) { assertTrue( "Failed to read last time or pressure from <" + testDataFileOut + ">: " + e.getMessage(), false ); return; } System.out.println( "Traj end date =" + trajEndDate ); System.out.println( "Pressure end value=" + presArray.getFloat( presArray.getIndex() ) ); } }