Skip to content
This repository has been archived by the owner on Dec 6, 2022. It is now read-only.

Commit

Permalink
Merge branch 'help'
Browse files Browse the repository at this point in the history
Conflicts:
	src/main/java/gov/nysenate/opendirectory/solr/SolrSession.java
  • Loading branch information
chrim committed Nov 23, 2010
2 parents ec16089 + 3b3d3b1 commit 22ae25e
Show file tree
Hide file tree
Showing 7 changed files with 239 additions and 82 deletions.
53 changes: 34 additions & 19 deletions schema.xml
Expand Up @@ -421,18 +421,28 @@

<field name="uid" type="string" indexed="true" stored="true" required="true" />
<field name="otype" type="string" indexed="true" stored="true" required="true" />
<field name="firstName" type="string" indexed="true" stored="true" />
<field name="lastName" type="string" indexed="true" stored="true"/>
<field name="title" type="string" indexed="true" stored="true"/>
<field name="fullName" type="string" indexed="true" stored="true"/>
<field name="state" type="string" indexed="true" stored="true" />
<field name="location" type="string" indexed="true" stored="true"/>
<field name="department" type="string" indexed="true" stored="true" />
<field name="phone" type="string" indexed="true" stored="true"/>
<field name="email" type="string" indexed="true" stored="true"/>
<field name="firstName" type="textgen" indexed="true" stored="true" />
<field name="lastName" type="textgen" indexed="true" stored="true"/>
<field name="title" type="textgen" indexed="true" stored="true"/>
<field name="fullName" type="textgen" indexed="true" stored="true"/>
<field name="state" type="textgen" indexed="true" stored="true" />
<field name="location" type="textgen" indexed="true" stored="true"/>
<field name="department" type="textgen" indexed="true" stored="true" />
<field name="phone" type="textgen" indexed="true" stored="true"/>
<field name="email" type="textgen" indexed="true" stored="true"/>
<field name="skills" type="textgen" indexed="true" stored="true"/>
<field name="interests" type="textgen" indexed="true" stored="true"/>
<field name="bio" type="textgen" indexed="true" stored="true"/>
<field name="facebook" type="textgen" indexed="false" stored="true"/>
<field name="linkedin" type="textgen" indexed="false" stored="true"/>
<field name="twitter" type="textgen" indexed="false" stored="true"/>
<field name="irc" type="textgen" indexed="true" stored="true"/>
<field name="picture" type="text" indexed="false" stored="true"/>
<field name="email2" type="textgen" indexed="true" stored="true"/>
<field name="phone2" type="textgen" indexed="true" stored="true"/>
<field name="permissions" type="string" indexed="false" stored="true"/>
<field name="user_credential" type="string" indexed="false" stored="true" />

<!-- <field name="id" type="string" indexed="true" stored="true" required="true" />
<field name="sku" type="textTight" indexed="true" stored="true" omitNorms="true"/>
<field name="name" type="textgen" indexed="true" stored="true"/>
Expand Down Expand Up @@ -531,22 +541,27 @@
<uniqueKey>uid</uniqueKey>

<!-- field for the QueryParser to use when an explicit fieldname is absent -->
<defaultSearchField>fullName</defaultSearchField>
<defaultSearchField>text</defaultSearchField>

<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="OR"/>

<!-- copyField commands copy one field to another at the time a document
is added to the index. It's used either to index the same field differently,
or to add multiple fields to the same field for easier/faster searching. -->
<!--
<copyField source="cat" dest="text"/>
<copyField source="name" dest="text"/>
<copyField source="manu" dest="text"/>
<copyField source="features" dest="text"/>
<copyField source="includes" dest="text"/>
<copyField source="manu" dest="manu_exact"/>
-->

<copyField source="fullName" dest="text"/>
<copyField source="phone" dest="text"/>
<copyField source="title" dest="text"/>
<copyField source="location" dest="text"/>
<copyField source="department" dest="text"/>
<copyField source="email" dest="text"/>
<copyField source="skills" dest="text"/>
<copyField source="interests" dest="text"/>
<copyField source="irc" dest="text"/>
<copyField source="email2" dest="text"/>
<copyField source="phone2" dest="text"/>

<!-- Above, multiple source fields are copied to the [text] field.
Another way to map multiple source fields to the same
destination field is to use the dynamic field syntax.
Expand Down
8 changes: 2 additions & 6 deletions src/main/java/gov/nysenate/opendirectory/ldap/Ldap.java
Expand Up @@ -157,17 +157,13 @@ public Person loadPerson(SearchResult record) throws NamingException {
person.setUid(getAttribute(attributes,"uid"));
person.setLocation(getAttribute(attributes,"l"));

TreeSet<String> cred_default = new TreeSet<String>();
cred_default.add("public");

person.setPermissions(Person.getDefaultPermissions());
person.setCredentials(cred_default);

String fullName = getAttribute(attributes,"displayname");
if (fullName!=null)
fullName = fullName.split("/")[0];

person.setFullName(fullName);

//Other person variables are set in SolrSession.java in AddPerson()
return person;
}
}
Expand Down
25 changes: 17 additions & 8 deletions src/main/java/gov/nysenate/opendirectory/ldap/Test.java
Expand Up @@ -49,24 +49,33 @@ public static void main(String[] args) throws NamingException, SolrServerExcepti
Solr test_solr = new Solr();
test_solr.connect();

Person test_person = new Person();
TreeSet<String> creds = new TreeSet<String>();
SolrSession test_session = new SolrSession(Person.getAdmin(), test_solr);
Person result = new Person();
result = test_session.loadPersonByName("Jared\\ Williams");
TreeSet<String> skills= new TreeSet<String>();
skills.add("java");
skills.add("programming");

creds.add("charlie_senate");
// //result.
//result.setSkills(skills);

test_person.setCredentials(creds);
//System.out.println(result.getPermissions().get("uid"));
//test_solr.delete("Jared\\ Williams");

SolrSession test_session = new SolrSession(test_person, test_solr);
Person result = new Person();
result = test_session.loadPersonByName("codetestname");
System.out.println("deleted");

test_session.savePerson(result);

result = test_session.loadPersonByName("Jared\\ Williams");

System.out.println(result.getLastName());
System.out.println(result.getLocation());
System.out.println(result.getEmail());
System.out.println(result.getDepartment());
System.out.println(result.getFullName());
System.out.println(result.getFirstName());

System.out.println(result.getPermissions());
System.out.println(result.getSkills());

/*SolrQuery query = new SolrQuery();
query.setQuery("id:codetes*");
Expand Down
103 changes: 88 additions & 15 deletions src/main/java/gov/nysenate/opendirectory/models/Person.java
Expand Up @@ -17,28 +17,30 @@ public Person() {}
private TreeSet<String> credentials;
private HashMap<String,TreeSet<String>> permissions;

@Field
private TreeSet<String> skills;
private TreeSet<String> interests;

private String firstName;
@Field
private String lastName;
@Field
private String title;
@Field
private String uid;
@Field
private String fullName;
@Field
private String state;
@Field
private String location;
@Field
private String department;
@Field
private String phone;
@Field
private String email;


//additional Contact info
private String bio;
private String picture;
private String email2;
private String phone2;
private String twitter;
private String facebook;
private String linkedin;
private String IRC;

public String getFirstName() {
return firstName;
}
Expand Down Expand Up @@ -75,7 +77,36 @@ public HashMap<String, TreeSet<String>> getPermissions() {
public TreeSet<String> getCredentials(){
return credentials;
}

public String getBio(){
return bio;
}
public String getPic(){
return picture;
}
public String getLinkedin() {
return linkedin;
}
public String getFacebook() {
return facebook;
}
public String getTwitter() {
return twitter;
}
public String getPhone2() {
return phone2;
}
public String getEmail2() {
return email2;
}
public TreeSet<String> getInterests() {
return interests;
}
public TreeSet<String> getSkills() {
return skills;
}
public String getIRC() {
return IRC;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
Expand Down Expand Up @@ -113,7 +144,37 @@ public void setPermissions (HashMap<String, TreeSet<String>> permissions){
public void setCredentials (TreeSet<String> credentials){
this.credentials = credentials;
}

public void setBio(String bio){
this.bio = bio;
}
public void setPic(String picture){
this.picture = picture;
}
public void setSkills(TreeSet<String> skills) {
this.skills = skills;
}
public void setInterests(TreeSet<String> interests) {
this.interests = interests;
}
public void setEmail2(String email2) {
this.email2 = email2;
}
public void setPhone2(String phone2) {
this.phone2 = phone2;
}
public void setTwitter(String twitter) {
this.twitter = twitter;
}
public void setFacebook(String facebook) {
this.facebook = facebook;
}
public void setLinkedin(String linkedin) {
this.linkedin = linkedin;
}
public void setIRC(String iRC) {
IRC = iRC;
}

public String toString() {
StringBuilder out = new StringBuilder();
out.append(fullName+"("+uid+")");
Expand Down Expand Up @@ -240,17 +301,29 @@ public static HashMap<String,TreeSet<String>> getDefaultPermissions() {

HashMap<String, TreeSet<String>> permissions = new HashMap<String,TreeSet<String>>();
//for each field put in default permission
permissions.put("permissions", cred_admin);
permissions.put("user_credential", cred_admin);
permissions.put("uid", cred_default);
permissions.put("email", cred_default);
permissions.put("phone", cred_default);
permissions.put("state", cred_default);
permissions.put("department", cred_default);
permissions.put("title", cred_default);
permissions.put("uid", cred_default);
permissions.put("firstName", cred_default);
permissions.put("fullName", cred_default);
permissions.put("lastName", cred_default);
permissions.put("location", cred_default);
permissions.put("user_credential", cred_admin);
permissions.put("bio", cred_default);
permissions.put("picture", cred_default);
permissions.put("email2", cred_default);
permissions.put("phone2", cred_default);
permissions.put("twitter", cred_default);
permissions.put("facebook", cred_default);
permissions.put("linkedin", cred_default);
permissions.put("irc", cred_default);
permissions.put("skills", cred_default);
permissions.put("interests", cred_default);


return permissions;
}
Expand Down
41 changes: 29 additions & 12 deletions src/main/java/gov/nysenate/opendirectory/solr/SecureLoader.java
Expand Up @@ -3,6 +3,7 @@
import java.io.StringReader;
import java.lang.reflect.Method;
import java.util.TreeSet;
import java.util.HashMap;

import org.apache.solr.common.SolrDocument;
import javax.xml.parsers.*;
Expand Down Expand Up @@ -35,35 +36,51 @@ public Person loadPerson(SolrDocument profile) {
is.setCharacterStream(new StringReader(permissions_xml));

Document doc = db.parse(is);

NodeList fields = doc.getDocumentElement().getChildNodes();
//Node field = new Node();
TreeSet<String> permissions = new TreeSet<String>();

//This is the TreeSet that will house credentials for each field
TreeSet<String> field_credentials = new TreeSet<String>();

Boolean approved;

for(int c=0; c<fields.getLength(); c++)
{
approved=false;
permissions = Permission((String)fields.item(c).getAttributes().item(0).getNodeValue());
field_credentials = Credentials((String)fields.item(c).getAttributes().item(0).getNodeValue());

if(user.equals(Person.getAdmin()))
approved = true;
else {
for(String temp : permissions) {
for(String temp : field_credentials) {
if(user.getCredentials().contains(temp) == true) {
approved = true;
break;
}
}
}

String fieldname = (String)fields.item(c).getAttributes().item(1).getNodeValue();
if(fieldname.equals("user_credential")) {

if(fieldname.equals("user_credential") || fieldname.equals("skills") || fieldname.equals("interests")) {
if(approved)
person.setCredentials(Permission((String)profile.getFieldValue("user_credential")));
person.setCredentials(Credentials((String)profile.getFieldValue(fieldname)));
else
person.setCredentials(null);

} else if(fieldname.equals("permissions")){
if(!approved)
person.setPermissions(null);
else{
HashMap<String, TreeSet<String>> permission = new HashMap<String, TreeSet<String>>();

for(int i=0; i<fields.getLength(); i++)
{
field_credentials= Credentials((String)fields.item(i).getAttributes().item(0).getNodeValue());
fieldname = (String)fields.item(i).getAttributes().item(1).getNodeValue();
permission.put(fieldname, field_credentials);
}

person.setPermissions(permission);
}
} else {
String setFieldName = "set"+fieldname.substring(0, 1).toUpperCase()+fieldname.substring(1);
Method setMethod = person.getClass().getMethod(setFieldName, String.class);
Expand All @@ -81,18 +98,18 @@ public Person loadPerson(SolrDocument profile) {
return person;
}

public TreeSet<String> Permission(String credentials){
public TreeSet<String> Credentials(String credentials){

TreeSet<String> permissions = new TreeSet<String>();
TreeSet<String> Credentials = new TreeSet<String>();

String[] credentialset = credentials.split(", ");

for(String temp : credentialset)
{
permissions.add(temp);
Credentials.add(temp);
}

return permissions;
return Credentials;
}

}

0 comments on commit 22ae25e

Please sign in to comment.