Example usage for org.springframework.jdbc.core PreparedStatementSetter PreparedStatementSetter

List of usage examples for org.springframework.jdbc.core PreparedStatementSetter PreparedStatementSetter

Introduction

In this page you can find the example usage for org.springframework.jdbc.core PreparedStatementSetter PreparedStatementSetter.

Prototype

PreparedStatementSetter

Source Link

Usage

From source file:org.cloudfoundry.identity.uaa.scim.jdbc.JdbcScimGroupProvisioning.java

public ScimGroup update(final String id, final ScimGroup group, final String zoneId)
        throws InvalidScimResourceException, ScimResourceNotFoundException {
    try {/*from  ww w. ja v  a 2s  .c  om*/
        validateGroup(group);

        int updated = jdbcTemplate.update(UPDATE_GROUP_SQL, new PreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement ps) throws SQLException {
                int pos = 1;
                ps.setInt(pos++, group.getVersion() + 1);
                ps.setString(pos++, group.getDisplayName());
                ps.setString(pos++, group.getDescription());
                ps.setTimestamp(pos++, new Timestamp(new Date().getTime()));
                ps.setString(pos++, id);
                ps.setInt(pos++, group.getVersion());
                ps.setString(pos++, zoneId);
            }
        });
        if (updated != 1) {
            throw new IncorrectResultSizeDataAccessException(1, updated);
        }
        return retrieve(id, zoneId);
    } catch (DuplicateKeyException ex) {
        throw new InvalidScimResourceException(
                "A group with displayName: " + group.getDisplayName() + " already exists");
    }
}

From source file:org.cloudfoundry.identity.uaa.scim.jdbc.JdbcScimUserProvisioning.java

@Override
public ScimUser create(final ScimUser user) {
    if (!hasText(user.getOrigin())) {
        user.setOrigin(OriginKeys.UAA);/*w  ww .  j  av  a2s .  c  om*/
    }
    validate(user);
    logger.debug("Creating new user: " + user.getUserName());

    final String id = UUID.randomUUID().toString();
    final String identityZoneId = IdentityZoneHolder.get().getId();
    final String origin = user.getOrigin();

    try {
        jdbcTemplate.update(CREATE_USER_SQL, new PreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement ps) throws SQLException {
                Timestamp t = new Timestamp(new Date().getTime());
                ps.setString(1, id);
                ps.setInt(2, user.getVersion());
                ps.setTimestamp(3, t);
                ps.setTimestamp(4, t);
                ps.setString(5, user.getUserName());
                ps.setString(6, user.getPrimaryEmail());
                if (user.getName() == null) {
                    ps.setString(7, null);
                    ps.setString(8, null);
                } else {
                    ps.setString(7, user.getName().getGivenName());
                    ps.setString(8, user.getName().getFamilyName());
                }
                ps.setBoolean(9, user.isActive());
                String phoneNumber = extractPhoneNumber(user);
                ps.setString(10, phoneNumber);
                ps.setBoolean(11, user.isVerified());
                ps.setString(12, origin);
                ps.setString(13, hasText(user.getExternalId()) ? user.getExternalId() : null);
                ps.setString(14, identityZoneId);
                ps.setString(15, user.getSalt());

                ps.setTimestamp(16, getPasswordLastModifiedTimestamp(t));
                ps.setNull(17, Types.BIGINT);
                ps.setNull(18, Types.BIGINT);
                ps.setString(19, user.getPassword());
            }

        });
    } catch (DuplicateKeyException e) {
        ScimUser existingUser = query("userName eq \"" + user.getUserName() + "\" and origin eq \""
                + (hasText(user.getOrigin()) ? user.getOrigin() : OriginKeys.UAA) + "\"").get(0);
        Map<String, Object> userDetails = new HashMap<>();
        userDetails.put("active", existingUser.isActive());
        userDetails.put("verified", existingUser.isVerified());
        userDetails.put("user_id", existingUser.getId());
        throw new ScimResourceAlreadyExistsException("Username already in use: " + existingUser.getUserName(),
                userDetails);
    }
    return retrieve(id);
}

From source file:org.cloudfoundry.identity.uaa.scim.jdbc.JdbcScimUserProvisioning.java

@Override
public ScimUser update(final String id, final ScimUser user) throws InvalidScimResourceException {
    validate(user);//from  www.java 2s . co  m
    logger.debug("Updating user " + user.getUserName());
    final String origin = hasText(user.getOrigin()) ? user.getOrigin() : OriginKeys.UAA;
    final String zoneId = IdentityZoneHolder.get().getId();
    int updated = jdbcTemplate.update(UPDATE_USER_SQL, new PreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement ps) throws SQLException {
            int pos = 1;
            Timestamp t = new Timestamp(new Date().getTime());
            ps.setInt(pos++, user.getVersion() + 1);
            ps.setTimestamp(pos++, t);
            ps.setString(pos++, user.getUserName());
            ps.setString(pos++, user.getPrimaryEmail());
            ps.setString(pos++, user.getName().getGivenName());
            ps.setString(pos++, user.getName().getFamilyName());
            ps.setBoolean(pos++, user.isActive());
            ps.setString(pos++, extractPhoneNumber(user));
            ps.setBoolean(pos++, user.isVerified());
            ps.setString(pos++, origin);
            ps.setString(pos++, hasText(user.getExternalId()) ? user.getExternalId() : null);
            ps.setString(pos++, user.getSalt());
            ps.setString(pos++, id);
            ps.setInt(pos++, user.getVersion());
            ps.setString(pos++, zoneId);
        }
    });
    ScimUser result = retrieve(id);
    if (updated == 0) {
        throw new OptimisticLockingFailureException(
                String.format("Attempt to update a user (%s) with wrong version: expected=%d but found=%d", id,
                        result.getVersion(), user.getVersion()));
    }
    if (updated > 1) {
        throw new IncorrectResultSizeDataAccessException(1);
    }
    return result;
}

From source file:org.cloudfoundry.identity.uaa.scim.jdbc.JdbcScimUserProvisioning.java

@Override
public void changePassword(final String id, String oldPassword, final String newPassword)
        throws ScimResourceNotFoundException {
    if (oldPassword != null && !checkPasswordMatches(id, oldPassword)) {
        throw new BadCredentialsException("Old password is incorrect");
    }// www. jav  a 2s. c o  m
    if (checkPasswordMatches(id, newPassword)) {
        return; //we don't want to update the same password
    }
    final String encNewPassword = passwordEncoder.encode(newPassword);
    final String zoneId = IdentityZoneHolder.get().getId();
    int updated = jdbcTemplate.update(CHANGE_PASSWORD_SQL, new PreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement ps) throws SQLException {
            Timestamp t = new Timestamp(System.currentTimeMillis());
            ps.setTimestamp(1, t);
            ps.setString(2, encNewPassword);
            ps.setTimestamp(3, getPasswordLastModifiedTimestamp(t));
            ps.setString(4, id);
            ps.setString(5, zoneId);
        }
    });
    if (updated == 0) {
        throw new ScimResourceNotFoundException("User " + id + " does not exist");
    }
    if (updated != 1) {
        throw new ScimResourceConstraintFailedException("User " + id + " duplicated");
    }
}

From source file:org.cloudfoundry.identity.uaa.scim.JdbcScimUserProvisioning.java

@Override
public ScimUser createUser(final ScimUser user, final String password)
        throws InvalidPasswordException, InvalidUserException {

    passwordValidator.validate(password, user);
    validate(user);/*  ww w . j a v a2  s.  co m*/

    logger.info("Creating new user: " + user.getUserName());

    final String id = UUID.randomUUID().toString();
    try {
        jdbcTemplate.update(CREATE_USER_SQL, new PreparedStatementSetter() {
            public void setValues(PreparedStatement ps) throws SQLException {
                ps.setString(1, id);
                ps.setInt(2, user.getVersion());
                ps.setTimestamp(3, new Timestamp(new Date().getTime()));
                ps.setTimestamp(4, new Timestamp(new Date().getTime()));
                ps.setString(5, user.getUserName());
                ps.setString(6, user.getPrimaryEmail());
                ps.setString(7, user.getName().getGivenName());
                ps.setString(8, user.getName().getFamilyName());
                ps.setBoolean(9, user.isActive());
                ps.setLong(10, UaaAuthority.fromUserType(user.getUserType()).value());
                String phoneNumber = extractPhoneNumber(user);
                ps.setString(11, phoneNumber);
                ps.setString(12, passwordEncoder.encode(password));
            }

        });
    } catch (DuplicateKeyException e) {
        throw new UserAlreadyExistsException(
                "Username already in use (could be inactive account): " + user.getUserName());
    }
    return retrieveUser(id);

}

From source file:org.cloudfoundry.identity.uaa.scim.JdbcScimUserProvisioning.java

@Override
public ScimUser updateUser(final String id, final ScimUser user) throws InvalidUserException {
    validate(user);/*from  w  w  w .j av  a  2  s.co m*/
    logger.info("Updating user " + user.getUserName());

    int updated = jdbcTemplate.update(UPDATE_USER_SQL, new PreparedStatementSetter() {
        public void setValues(PreparedStatement ps) throws SQLException {
            ps.setInt(1, user.getVersion() + 1);
            ps.setTimestamp(2, new Timestamp(new Date().getTime()));
            ps.setString(3, user.getPrimaryEmail());
            ps.setString(4, user.getName().getGivenName());
            ps.setString(5, user.getName().getFamilyName());
            ps.setBoolean(6, user.isActive());
            ps.setLong(7, UaaAuthority.fromUserType(user.getUserType()).value());
            ps.setString(8, extractPhoneNumber(user));
            ps.setString(9, id);
            ps.setInt(10, user.getVersion());
        }
    });
    ScimUser result = retrieveUser(id);
    if (updated == 0) {
        throw new OptimisticLockingFailureException(
                String.format("Attempt to update a user (%s) with wrong version: expected=%d but found=%d", id,
                        result.getVersion(), user.getVersion()));
    }
    if (updated > 1) {
        throw new IncorrectResultSizeDataAccessException(1);
    }
    return result;
}

From source file:org.cloudfoundry.identity.uaa.scim.JdbcScimUserProvisioning.java

@Override
public boolean changePassword(final String id, String oldPassword, final String newPassword)
        throws UserNotFoundException {
    if (oldPassword != null) {
        checkPasswordMatches(id, oldPassword);
    }//www .j  av a  2s  .c o m

    int updated = jdbcTemplate.update(CHANGE_PASSWORD_SQL, new PreparedStatementSetter() {
        public void setValues(PreparedStatement ps) throws SQLException {
            ps.setTimestamp(1, new Timestamp(new Date().getTime()));
            ps.setString(2, passwordEncoder.encode(newPassword));
            ps.setString(3, id);
        }
    });
    if (updated == 0) {
        throw new UserNotFoundException("User " + id + " does not exist");
    }
    if (updated != 1) {
        throw new IncorrectResultSizeDataAccessException(1);
    }
    return true;
}

From source file:org.cloudfoundry.identity.uaa.zone.JdbcIdentityZoneProvisioning.java

@Override
public IdentityZone create(final IdentityZone identityZone) {

    try {//  w w w .  j a va 2 s  . c o  m
        jdbcTemplate.update(CREATE_IDENTITY_ZONE_SQL, new PreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement ps) throws SQLException {
                ps.setString(1, identityZone.getId().trim());
                ps.setInt(2, identityZone.getVersion());
                ps.setTimestamp(3, new Timestamp(new Date().getTime()));
                ps.setTimestamp(4, new Timestamp(new Date().getTime()));
                ps.setString(5, identityZone.getName());
                ps.setString(6, identityZone.getSubdomain().toLowerCase());
                ps.setString(7, identityZone.getDescription());
                ps.setString(8,
                        identityZone.getConfig() != null
                                ? JsonUtils.writeValueAsString(identityZone.getConfig())
                                : null);
            }
        });
    } catch (DuplicateKeyException e) {
        throw new ZoneAlreadyExistsException(e.getMostSpecificCause().getMessage(), e);
    }

    return retrieve(identityZone.getId());
}

From source file:org.cloudfoundry.identity.uaa.zone.JdbcIdentityZoneProvisioning.java

@Override
public IdentityZone update(final IdentityZone identityZone) {

    try {//from  w  w  w .  j  av  a  2 s.  com
        jdbcTemplate.update(UPDATE_IDENTITY_ZONE_SQL, new PreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement ps) throws SQLException {
                ps.setInt(1, identityZone.getVersion() + 1);
                ps.setTimestamp(2, new Timestamp(new Date().getTime()));
                ps.setString(3, identityZone.getName());
                ps.setString(4, identityZone.getSubdomain().toLowerCase());
                ps.setString(5, identityZone.getDescription());
                ps.setString(6,
                        identityZone.getConfig() != null
                                ? JsonUtils.writeValueAsString(identityZone.getConfig())
                                : null);
                ps.setString(7, identityZone.getId().trim());
            }
        });
    } catch (DuplicateKeyException e) {
        //duplicate subdomain
        throw new ZoneAlreadyExistsException(e.getMostSpecificCause().getMessage(), e);
    }
    return retrieve(identityZone.getId());
}

From source file:org.sipfoundry.sipxconfig.firewall.FirewallManagerImpl.java

@Override
public void saveServerGroup(final ServerGroup serverGroup) {
    String sql;/* ww w .j a v a2  s . com*/
    if (serverGroup.isNew()) {
        sql = "insert into firewall_server_group (firewall_server_group_id, name, servers) values "
                + "(nextval('firewall_server_group_seq'),?,?)";
    } else {
        sql = "update firewall_server_group set name = ?, servers = ? where firewall_server_group_id = ?";
    }
    m_jdbc.update(sql, new PreparedStatementSetter() {
        public void setValues(PreparedStatement ps) throws SQLException {
            ps.setString(1, serverGroup.getName());
            ps.setString(2, serverGroup.getServerList());
            if (!serverGroup.isNew()) {
                ps.setInt(3, serverGroup.getId());
            }
        }
    });
}