Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Creative commons Attribution-NonCommercial license. http://creativecommons.org/licenses/by-nc/2.5/au/deed.en_GB NO WARRANTY IS GIVEN OR IMPLIED, USE AT YOUR OWN RISK.
  
  package base.jee.api.sql;
  
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
 
 
 import base.Query;
 import base.json.Json;
 
 import static base.jee.api.sql.util.Log.log;
 
 public class SearchPeople extends Query<Person> {
 
 	private DataSource ds;
 	private User user;
 	private String keywords;
 
 	public SearchPeople() {
 	}
 
 	public SearchPeople(DataSource dsUser userString keywordsthrows PermissionException {
 
 		if(ds == null) {
 			throw new IllegalArgumentException("Invalid parameter: ds");
 		}
 		if(user == null || !user.isAuthenticated()) {
 			throw new PermissionException(getClass().getSimpleName(), user"Requires authenticated user.".);
 		}
 
 		this. = ds;
 		this. = user;
 		this. = keywords;
 	}
 
 	public Query<PersonnewWithParameters(Map<StringObjectparametersthrows PermissionException {
 		return new SearchPeople(
 				((SqlAPI)parameters.get("api")).getDataSource(),
 				(User)parameters.get("user"),
 				(String)parameters.get("keywords"));
 	}
 
 	public List<Personexecute() throws IOException {
 		List<Personresults = new LinkedList<>();
 		Connection c = null;
 		try {
 			c = .getConnection();
 			c.setAutoCommit(false);
 
 				c.rollback();
 				log(c"WARN""Permission denied invoking: " + SearchPeople.class.getSimpleName() + " " + getJsonParameters());
 				c.commit();
 				throw new PermissionException(this.getClass().getSimpleName(), "You do not have permission to manage people".);
 			}
 
 			String query =
 					"select distinct uuid, first_name, last_name, email, last_auth, expiry "+
 					"from  person " +
 					"where ";
 			int parameters = 0;
 			String[] kw = .split(" +");
 			for(int i = 0; i < kw.lengthi++) {
 				if(parameters > 0) {
 					query = query + " and ";
 				}
 				query = query + "(first_name like ? or last_name like ? or email like ?) ";
 				parameters = parameters + 3;
 			}
 			query = query + "order by first_name, last_name, email";
 
 			PreparedStatement s = null;
 			s = c.prepareStatement(query);
 			int i = 1;
 			for(String k : kw) {
 				s.setString(i++, "%" + k + "%");
 				s.setString(i++, "%" + k + "%");
 				s.setString(i++, "%" + k + "%");
			}
			while(r.next()) {
				Person p = new Person();
				if(r.getLong(5) != 0) {
					p.setLastAuth(new Date(r.getLong(5)));
				}
				if(r.getLong(6) != 0) {
					p.setExpiry(new Date(r.getLong(6)));
				}
				results.add(p);
			}
			r.close();
			s.close();
catch(SQLException e) {
			throw new IOException(e);
finally {
			if(c != null) {
				try { c.rollback(); } catch (SQLException e) {}
				try { c.close(); } catch (SQLException e) {}
			}
		}
		return results;
	}
		return "{" +
				"\"person\":" + .getPersonUuid() + "," +
				"\"keywords\":\"" + Json.escape() + "\"" +
				"}";
	}
New to GrepCode? Check out our FAQ X