Access file geodatabase
arcgissamples\geodatabase\AccessFileGDB.java
/* Copyright 2010 ESRI
* 
* All rights reserved under the copyright laws of the United States
* and applicable international laws, treaties, and conventions.
* 
* You may freely redistribute and use this sample code, with or
* without modification, provided you include the original copyright
* notice and use restrictions.
* 
* See the use restrictions.
* 
*/
package arcgissamples.geodatabase;

import java.io.File;

import com.esri.arcgis.datasourcesGDB.FileGDBWorkspaceFactory;
import com.esri.arcgis.geodatabase.FeatureClass;
import com.esri.arcgis.geodatabase.IDataset;
import com.esri.arcgis.geodatabase.IDatasetName;
import com.esri.arcgis.geodatabase.IEnumDataset;
import com.esri.arcgis.geodatabase.IEnumDatasetName;
import com.esri.arcgis.geodatabase.Workspace;
import com.esri.arcgis.geodatabase.esriDatasetType;
import com.esri.arcgis.system.AoInitialize;
import com.esri.arcgis.system.EngineInitializer;
import com.esri.arcgis.system.esriLicenseProductCode;
import com.esri.arcgis.system.esriLicenseStatus;

public class AccessFileGDB {

  public AccessFileGDB(){

  }

  /**
   * Main Method - The console application entry point.
   * 
   * @param args String[] Command line argument
   */
  public static void main(String[] args) {
    System.out.println("Starting BrowseFileGDB - An ArcObjects SDK Developer Sample");

    try{
      //Initialize engine console application
      EngineInitializer.initializeEngine();

      //Initialize ArcGIS license
      AoInitialize aoInit = new AoInitialize();
      initializeArcGISLicenses(aoInit);

      //Get DEVKITHOME Home
      String devKitHome = System.getenv("AGSDEVKITJAVA");

      //Data access setup
      String inFGDB = devKitHome + "java" + File.separator + "samples" + File.separator 
      + "data" + File.separator + "usa"     + File.separator
      + "usa.gdb";
      System.out.println("Input is " + inFGDB);

      AccessFileGDB accessFileGDB = new AccessFileGDB();
      accessFileGDB.browseFileGDB(inFGDB);

      System.out.println("Done.");      
      
      //Ensure any ESRI libraries are unloaded in the correct order
      aoInit.shutdown();
    }catch(Exception e){
      System.out.println("Error: " + e.getMessage());
      System.out.println("Sample failed.  Exiting...");
      e.printStackTrace();
      System.exit(-1);
    }
  }

  /**
   * Checks to see if an ArcGIS Engine Runtime license or an ArcView License
   * is available. If so, then the appropriate ArcGIS License is initialized.
   * 
   * @param aoInit The AoInitialize object instantiated in the main method.
   */
  private static void initializeArcGISLicenses(AoInitialize aoInit) {
    try {
      if (aoInit.isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine) 
          == esriLicenseStatus.esriLicenseAvailable)
        aoInit.initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
      else if (aoInit.isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeArcView) 
          == esriLicenseStatus.esriLicenseAvailable)
        aoInit.initialize(esriLicenseProductCode.esriLicenseProductCodeArcView);
      else{
        System.err.println("Could not initialize an Engine or ArcView license. Exiting application.");
        System.exit(-1);
      }
    } catch (Exception e) {e.printStackTrace();}
  }

  /**
   * Browse the file geodatabase and print some useful information.
   * 
   * @param inFGDB The path to the file geodatabase
   */
  private void browseFileGDB(String inFGDB){
    try{
      FileGDBWorkspaceFactory factory = new FileGDBWorkspaceFactory();
      Workspace workspace = new Workspace(factory.openFromFile(inFGDB, 0));
      
      //Get all dataset names in the workspace
      IEnumDatasetName enumDatasetName = workspace.getDatasetNames(esriDatasetType.esriDTAny);
      
      //Get the first name in the dataset
      IDatasetName dsName = enumDatasetName.next();
      while(dsName != null){
        //Print out the dataset name to the console
        System.out.println("Dataset Name: " + dsName.getName());
      
        //Get the next name in the enumeration of dataset names
        dsName = enumDatasetName.next();
      }
      
      //Get all the datasets
      IEnumDataset enumDataset = workspace.getDatasets(esriDatasetType.esriDTFeatureClass);

      //Get the first dataset
      IDataset ds = enumDataset.next();
      while(ds != null){
        FeatureClass fClass = new FeatureClass(ds);
        
        int fCount = fClass.featureCount(null);
        
        System.out.println("FeatureClass " + fClass.getAliasName() + " has "
            + fCount + " features.");
        
        
        ds = enumDataset.next();
      }
    }catch(Exception e){e.printStackTrace();}
  }
}