CAS Unit Tests
Clover coverage report - CAS Unit Tests
Coverage timestamp: Mon Jul 4 2005 18:13:17 CDT
file stats: LOC: 151   Methods: 4
NCLOC: 102   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
NamespaceDataHandler.java 0% 0% 0% 0%
coverage
 1    /*
 2    * Portions of this file Copyright 1999-2005 University of Chicago
 3    * Portions of this file Copyright 1999-2005 The University of Southern California.
 4    *
 5    * This file or a portion of this file is licensed under the
 6    * terms of the Globus Toolkit Public License, found at
 7    * http://www.globus.org/toolkit/download/license.html.
 8    * If you redistribute this file, with or without
 9    * modifications, you must include this notice in the file.
 10    */
 11    package org.globus.cas.impl.databaseAccess;
 12   
 13    import java.sql.ResultSet;
 14    import java.sql.SQLException;
 15    import java.sql.Connection;
 16    import java.sql.Statement;
 17   
 18    import org.apache.commons.logging.Log;
 19    import org.apache.commons.logging.LogFactory;
 20   
 21    import org.globus.cas.impl.CasConstants;
 22   
 23    import org.globus.cas.types.CasObjectData;
 24    import org.globus.cas.types.NamespaceData;
 25   
 26    import org.globus.util.I18n;
 27   
 28    /**
 29    * Used to manipulate NamespaceData in database
 30    */
 31    public class NamespaceDataHandler {
 32   
 33    static Log logger = LogFactory.getLog(NamespaceData.class.getName() );
 34   
 35    private static I18n i18n =
 36    I18n.getI18n("org.globus.cas.impl.databaseAccess.errors",
 37    NamespaceDataHandler.class.getClassLoader());
 38   
 39    /**
 40    * Store the name space object
 41    * Manipulates only the namespace_table in the daabase
 42    */
 43  0 public static String storeObject(NamespaceData dataObject)
 44    throws CasDBException {
 45   
 46  0 String columnString = "insert into" + CasDBConstants.TABLE_NAMESPACE
 47    + " (" + CasDBConstants.COL_NS_NICKNAME + ","
 48    + CasDBConstants.COL_BASENAME + ","
 49    + CasDBConstants.COL_COMPARISON_ALG + ") values ('";
 50  0 StringBuffer query = new StringBuffer(columnString);
 51  0 query = query.append(dataObject.getNickname()).append("','")
 52    .append(dataObject.getBasename()).append("','")
 53    .append(dataObject.getComparisonAlg()).append("')");
 54  0 CasDBStorage.runUpdateQuery(query.toString());
 55  0 return dataObject.getNickname();
 56    }
 57   
 58    /**
 59    * List of all Namespace
 60    */
 61  0 public static String[] list() throws CasDBException {
 62   
 63  0 String query = "select" + CasDBConstants.COL_NS_NICKNAME + " from"
 64    + CasDBConstants.TABLE_NAMESPACE;
 65  0 return CasDBStorage.runListQuery(query,
 66    CasDBConstants.COL_NS_NICKNAME);
 67    }
 68   
 69    /*
 70    * Retrieves Namespace data
 71    * Picks up values frm trust anchor table
 72    */
 73  0 public static CasObjectData retrieveObject(String nickname)
 74    throws CasDBException {
 75   
 76  0 NamespaceData returnObject = null;
 77  0 String query = "select * from" + CasDBConstants.TABLE_NAMESPACE
 78    + " where" + CasDBConstants.COL_NS_NICKNAME + " = '"
 79    + nickname.trim() + "'";
 80  0 Connection connection = CasDBStorage.getDBConnection();
 81  0 Statement statement = null;
 82  0 ResultSet resultSet = null;
 83  0 try {
 84  0 statement = connection.createStatement();
 85  0 resultSet = statement.executeQuery(query);
 86  0 if ((resultSet!=null) && (resultSet.next())) {
 87  0 returnObject = new NamespaceData();
 88  0 returnObject.setNickname(resultSet
 89    .getString(CasDBConstants
 90    .COL_NS_NICKNAME.trim()));
 91  0 returnObject.setBasename(resultSet.getString(
 92    CasDBConstants.COL_BASENAME.trim()));
 93  0 returnObject.setComparisonAlg(resultSet.getString(
 94    CasDBConstants.COL_COMPARISON_ALG.trim()));
 95    }
 96    }
 97    catch (SQLException exp) {
 98  0 logger.error(i18n.getMessage("retrieveErr", new Object[] {
 99    "namespace", query }), exp);
 100  0 throw new CasDBException(i18n.getMessage("retrieveErr",
 101    new Object[] {
 102    "namespace", "" })
 103    + exp.getMessage(), exp);
 104    }
 105    finally {
 106    // returning connection irrespective of whether stmt
 107    // and result set are closed or not.
 108  0 CasDBStorage.returnDBConnection(connection);
 109  0 try {
 110  0 if (resultSet != null)
 111  0 resultSet.close();
 112  0 if (statement != null)
 113  0 statement.close();
 114    }
 115    catch (SQLException exp) {
 116  0 String err = "Error retrieving namespace object. Could not "
 117    + " close SQL statement.";
 118  0 logger.warn(err, exp);
 119    }
 120    }
 121  0 return returnObject;
 122    }
 123   
 124    /**
 125    * Remove namespace entry from database
 126    * Manipulates only namespace table
 127    */
 128  0 public static void deleteObject(String nickname) throws CasDBException {
 129   
 130    // Namespace can be a member of object group, no SQL constraint
 131    // defines that. So check.
 132  0 if (ObjectGroupDataHandler.isMember(nickname.trim(),
 133    CasConstants.NAMESPACE_SPEC)) {
 134  0 String errMesg = i18n.getMessage("memberOfGpErr", new Object [] {
 135    "namespace", nickname.trim(), "object"});
 136  0 logger.debug(errMesg);
 137  0 throw new CasDBException(errMesg);
 138    }
 139   
 140  0 String query = "delete from" + CasDBConstants.TABLE_NAMESPACE
 141    + " where" + CasDBConstants.COL_NS_NICKNAME + " = '"
 142    + nickname.trim() + "'";
 143  0 logger.debug("query is " + query);
 144  0 int updated = CasDBStorage.runUpdateQuery(query);
 145  0 if (updated <= 0) {
 146  0 String err = i18n.getMessage("nsDelError", nickname);
 147  0 logger.error(err);
 148  0 throw new CasDBException(err);
 149    }
 150    }
 151    }