@Override public Application updateApplication(Application application) throws DatastoreException { log.debug("Updating application: [%s]", application); if (getApplication(application.getBareJid()) == null) { log.error("Application [%s] does not exist", application); throw new ApplicationNotFoundException(); } return saveApplication(application); }
@Override public Application storeApplication(Application application) throws DatastoreException { log.debug("Storing application: [%s]", application); if (getApplication(application.getBareJid()) != null) { log.error("Application [%s] already exists", application); throw new ApplicationAlreadyExistsException(); } return saveApplication(application); }
private void populateApplicationData(Application application, List<Column> columns) { for (Column column : columns) { String name = Bytes.toUTF8(column.getName()); if (name.equals("appId")) { application.setAppId(Bytes.toUTF8((column.getValue()))); } if (name.equals("platformId")) { application.setPlatform(Bytes.toUTF8((column.getValue()))); } if (name.equals("name")) { application.setName(Bytes.toUTF8((column.getValue()))); } if (name.equals("accountId")) { application.setAccountId(Bytes.toUTF8((column.getValue()))); } if (name.equals("permissions")) { application.setPermissions(Bytes.toUTF8((column.getValue()))); } } }
private Application saveApplication(Application application) throws DatastoreException { Mutator mutator = Pelops.createMutator(schemaName); mutator.writeColumns( "applications", application.getBareJid(), mutator.newColumnList( mutator.newColumn(Bytes.fromUTF8("appId"), Bytes.fromUTF8(application.getAppId())), mutator.newColumn( Bytes.fromUTF8("platformId"), Bytes.fromUTF8(application.getPlatform())), mutator.newColumn(Bytes.fromUTF8("name"), Bytes.fromUTF8(application.getName())), mutator.newColumn( Bytes.fromUTF8("accountId"), Bytes.fromUTF8(application.getAccountId())), mutator.newColumn( Bytes.fromUTF8("permissions"), Bytes.fromUTF8(application.getPermissions())))); try { mutator.execute(ConsistencyLevel.ONE); log.debug("Application [%s] stored successfully", application); } catch (Exception e) { log.error(e.getMessage(), e); throw new DatastoreException(String.format("Could not create application [%s]", application)); } return application; }
@Override public GatewayClient getClient(String jid) { log.debug("Finding client with jid: [%s]", jid); GatewayClient client = null; try { String bareJid = JIDUtils.getBareJid(jid); String resource = JIDUtils.getResource(jid); boolean resourceFound = false; Selector selector = Pelops.createSelector(schemaName); List<Column> columns = selector.getColumnsFromRow("clients", bareJid, false, ConsistencyLevel.ONE); if (columns != null && columns.size() > 0) { for (Column column : columns) { String name = Bytes.toUTF8(column.getName()); if (name.equals(resource)) { resourceFound = true; } } } if (resourceFound) { Application application = getApplication(JIDUtils.getBareJid(jid)); if (application != null) { client = new GatewayClient(); client.setJid(jid); client.setPlatform(application.getPlatform()); } } } catch (PelopsException pe) { log.error(pe.getMessage(), pe); } return client; }