No, GORM (Grails Object Relational Mapping) On Sep 23, 2013, at 9:18 PM, David Medinets <[email protected]> wrote:
> When you say "GORM", are you talking about Apache GORA? If so, see > https://github.com/medined/gora-with-accumulo for a few examples. Nothing > very elaborate, I'm afraid. > > > On Mon, Sep 23, 2013 at 3:34 PM, Benjamin Parrish > <[email protected]> wrote: > yeah, I think I found the error when trying to add a Range to the Scanner > object when doing 'Plate plate = new Plate(Plate.getMap(rowId, scanner));' I > modified the Scanner in the getMap() method, but the data wasn't persisting > correctly. > > Side question. Has anyone started a helper library or GORM for Accumulo? > > On Sep 23, 2013, at 2:46 PM, Michael Wall <[email protected]> wrote: > > > Without seeing all your code, I notice that both setAuthorizations and > > getScanner return null. Are you sure whatever _db is in the filter > > method is getting setup as you expect? > > > > On Mon, Sep 23, 2013 at 12:28 PM, Benjamin Parrish > > <[email protected]> wrote: > >> This is on a stand-alone instance. Stepping through the code I can see > >> that > >> it is getting the correct Authorizations from getAuthorizations() method > >> that I have, and it propagates to the Scanner object, but the Scanner > >> object > >> is not pulling in the data associated with that column visibility. I can > >> run a setauths on the shell and see all the data with the same > >> Authorization. > >> > >> On Sep 23, 2013, at 12:06 PM, Eric Newton <[email protected]> wrote: > >> > >> Authorizations, like all settings, take a moment to propagate to all > >> servers. > >> > >> -Eric > >> > >> > >> > >> On Mon, Sep 23, 2013 at 9:24 AM, Benjamin Parrish > >> <[email protected]> wrote: > >>> > >>> I am trying to set authorizations in code, but the scanner is always > >>> returning the previous fetch of data using the previous authorizations. I > >>> am setting the Authorizations on the Connector, and then I get a new > >>> Scanner > >>> after setting the Authorizations. > >>> > >>> public Authorizations setAuthorizations(SecurityGroup[] authorizations) { > >>> List<byte[]> authorizationList = new ArrayList<byte[]>(); > >>> > >>> for (SecurityGroup auth : authorizations) { > >>> String groupString = Security.getName(auth); > >>> > >>> byte[] groupBytes = groupString.getBytes(); > >>> > >>> authorizationList.add(groupBytes); > >>> } > >>> > >>> Authorizations auths = new Authorizations(authorizationList); > >>> > >>> try { > >>> connector.securityOperations().changeUserAuthorizations(_loggedInUser, > >>> auths); > >>> > >>> return auths; > >>> } catch (AccumuloException e) { > >>> // TODO Auto-generated catch block > >>> e.printStackTrace(); > >>> } catch (AccumuloSecurityException e) { > >>> // TODO Auto-generated catch block > >>> e.printStackTrace(); > >>> } > >>> > >>> return null; > >>> } > >>> > >>> public Scanner getScanner() { > >>> try { > >>> Authorizations auths = this.getAuthorizations(); > >>> > >>> return connector.createScanner(TABLE, auths); > >>> } catch (TableNotFoundException e) { > >>> // TODO Auto-generated catch block > >>> e.printStackTrace(); > >>> } > >>> > >>> return null; > >>> } > >>> > >>> @Override > >>> public Collection<Plate> filter(SecurityGroup[] authorizations, String > >>> regEx) { > >>> _db.setAuthorizations(authorizations); > >>> > >>> Scanner scanner = _db.getScanner(); > >>> > >>> String valueRegex = (regEx.equals("")) ? ".*" : regEx + ".*"; > >>> > >>> scanner.fetchColumn(Plate.COLUMN_FAMILY, new Text(Plate.PLATE_QUALIFIER)); > >>> > >>> IteratorSetting iter = new IteratorSetting(1, "regexfilter", > >>> RegExFilter.class); > >>> > >>> iter.addOption(RegExFilter.VALUE_REGEX, valueRegex); > >>> > >>> scanner.addScanIterator(iter); > >>> > >>> Iterator<Entry<Key, Value>> it = scanner.iterator(); > >>> > >>> Map<Text, Plate> map = new HashMap<Text, Plate>(); > >>> > >>> while (it.hasNext()) { > >>> Entry<Key,Value> entry = it.next(); > >>> > >>> Text rowId = entry.getKey().getRow(); > >>> > >>> if (map.containsKey(rowId)) { > >>> continue; > >>> } > >>> > >>> Plate plate = new Plate(Plate.getMap(rowId, scanner)); > >>> > >>> map.put(rowId, plate); > >>> } > >>> > >>> return map.values(); > >>> } > >> > >> > >> > >
