Project

General

Profile

« Previous | Next » 

Revision 6016

use access control dao for setting access in EML parser. send additional xml_access info in replication request

View differences:

Eml200SAXHandler.java
52 52
import org.xml.sax.Attributes;
53 53
import org.xml.sax.SAXException;
54 54

  
55
import edu.ucsb.nceas.metacat.accesscontrol.AccessControlForSingleFile;
55 56
import edu.ucsb.nceas.metacat.accesscontrol.AccessControlInterface;
56 57
import edu.ucsb.nceas.metacat.accesscontrol.AccessRule;
57 58
import edu.ucsb.nceas.metacat.accesscontrol.AccessSection;
59
import edu.ucsb.nceas.metacat.accesscontrol.XMLAccessDAO;
58 60
import edu.ucsb.nceas.metacat.database.DBConnection;
59 61
import edu.ucsb.nceas.metacat.database.DBConnectionPool;
60 62
import edu.ucsb.nceas.metacat.properties.PropertyService;
......
2079 2081
    }//writeTopAccessRuletoDB
2080 2082

  
2081 2083
    /* Write a gaven access rule into db */
2082
    private void writeGivenAccessRuleIntoDB(String permOrder, Vector accessRules,
2084
    private void writeGivenAccessRuleIntoDB(String permOrder, Vector<AccessRule> accessRules,
2083 2085
                     String dataId, String subTreeId) throws SAXException
2084 2086
    {
2085 2087
      if (permOrder == null || permOrder.trim().equals("") || dataId == null ||
......
2090 2092
                                  " write to xml_access table");
2091 2093
        throw new SAXException("The access object is null");
2092 2094
      }
2093
       // get rid of rev from dataId
2094
       //dataId = MetacatUtil.getDocIdFromString(dataId);
2095
       //String permOrder = accessSection.getPermissionOrder();
2096
       String sql = null;
2097
       PreparedStatement pstmt = null;
2098
       sql = "INSERT INTO xml_access (docid, principal_name, permission, "
2099
               + "perm_type, perm_order, accessfileid, subtreeid) VALUES "
2100
               + " (?, ?, ?, ?, ?, ?, ?)";
2101

  
2102
       try
2103
       {
2104

  
2105
           pstmt = connection.prepareStatement(sql);
2106
           // Increase DBConnection usage count
2107
           connection.increaseUsageCount(1);
2108
           // Bind the values to the query
2109
           pstmt.setString(1, dataId);
2110
           logMetacat.info("Docid in accesstable: " + docid);
2111
           pstmt.setString(6, docid);
2112
           logMetacat.info("Accessfileid in accesstable: " + docid);
2113
           pstmt.setString(5, permOrder);
2114
           logMetacat.info("PermOder in accesstable: " + permOrder);
2115
           pstmt.setString(7, subTreeId);
2116
           logMetacat.info("subtree id in accesstable: " + subTreeId);
2117
           // if it is not top level, set s id
2118

  
2119
           //Vector accessRules = accessSection.getAccessRules();
2095
       try {
2096
           AccessControlForSingleFile acfsf = new AccessControlForSingleFile(dataId);
2120 2097
           // go through every rule
2121
           for (int i = 0; i < accessRules.size(); i++)
2122
           {
2123
               AccessRule rule = (AccessRule) accessRules.elementAt(i);
2098
           for (int i = 0; i < accessRules.size(); i++) {
2099
               AccessRule rule = accessRules.elementAt(i);
2124 2100
               String permType = rule.getPermissionType();
2125 2101
               int permission = rule.getPermission();
2126
               pstmt.setInt(3, permission);
2127
               logMetacat.info("permission in accesstable: "
2128
                       + permission);
2129
               pstmt.setString(4, permType);
2130
               logMetacat.info(
2131
                       "Permtype in accesstable: " + permType);
2102
               logMetacat.info("permission in accesstable: " + permission);
2103
               logMetacat.info("Permtype in accesstable: " + permType);
2132 2104
               // go through every principle in rule
2133 2105
               Vector nameVector = rule.getPrincipal();
2134
               for (int j = 0; j < nameVector.size(); j++)
2135
               {
2106
               for (int j = 0; j < nameVector.size(); j++) {
2136 2107
                   String prName = (String) nameVector.elementAt(j);
2137
                   pstmt.setString(2, prName);
2138
                   logMetacat.info("Principal in accesstable: "
2139
                           + prName);
2140
                   logMetacat.debug("running sql: " + pstmt.toString());
2141
                   pstmt.execute();
2108
					logMetacat.debug("Principal in accesstable: " + prName);
2109
					XMLAccessDAO dao = new XMLAccessDAO();
2110
					dao.setAccessFileId(docid);
2111
					dao.setDocId(dataId);
2112
					dao.setPermission(new Long(permission));
2113
					dao.setPermOrder(permOrder);
2114
					dao.setPermType(permType);
2115
					dao.setPrincipalName(prName);
2116
					dao.setSubTreeId(subTreeId);
2117
					// insert if it does not exist
2118
					if (!acfsf.accessControlExists(dao)) {
2119
						acfsf.insertPermissions(dao);
2120
					}
2142 2121
               }//for
2143 2122
           }//for
2144
           pstmt.close();
2123
           
2145 2124
       }//try
2146
       catch (SQLException e)
2147
       {
2125
       catch (Exception e) {
2148 2126
           throw new SAXException("EMLSAXHandler.writeAccessRuletoDB(): "
2149 2127
                   + e.getMessage());
2150 2128
       }//catch
2151
       finally
2152
       {
2153
           try
2154
           {
2155
               pstmt.close();
2156
           }
2157
           catch (SQLException ee)
2158
           {
2159
               throw new SAXException("EMLSAXHandler.writeAccessRuletoDB(): "
2160
                       + ee.getMessage());
2161
           }
2162
       }//finally
2163 2129

  
2164 2130
    }//writeGivenAccessRuleIntoDB
2165 2131

  

Also available in: Unified diff