All Downloads are FREE. Search and download functionalities are using the official Maven repository.

base.jee.api.cassandra.JoinGroup Maven / Gradle / Ivy

/**
 * 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.cassandra;

import base.Command;
import base.jee.Constants;
import base.security.PermissionException;
import base.security.ResourceUid;
import base.security.User;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;

import java.io.IOException;
import java.util.UUID;

import static base.jee.api.cassandra.util.Log.log;

public class JoinGroup extends Command {

	private CassandraAPI api;
	private User user;
	private UUID group;
	private UUID person;

	public JoinGroup(CassandraAPI api, User user, UUID group, UUID person) throws PermissionException {

		if(api == null) {
			throw new IllegalArgumentException("Invalid parameter: api");
		}
		if(group == null) {
			throw new IllegalArgumentException("Invalid parameter: group");
		}
		if(person == null) {
			throw new IllegalArgumentException("Invalid parameter: person");
		}
		if(user == null) {
			throw new PermissionException(this.getClass().getSimpleName(), user, "You do not have permission to manage groups.", Constants.GROUP_MANAGE_ROLE);
		}

		this.api = api;
		this.group = group;
		this.person = person;
		this.user = user;
	}

	public JoinGroup() {
	}

	@Override
	protected void execute() throws IOException {
		Session s = api.getCassandraSession();

		PreparedStatement t = s.prepare("insert into group_member (person_uuid,group_uuid,joined) values(?,?,?)");
		s.execute(t.bind(person, group));
		log(s, "INFO", user, "Added person " + person + " for to group " + group, new ResourceUid("Person", person.toString()), new ResourceUid("Group", group.toString()));
	}

	@Override
	public String getJsonParameters() {
		return "{" +
				"\"user.person_uuid\":\"" + user.getPersonUuid() + "\"," +
				"\"group.uuid\":\"" + group + "\"," +
				"\"person.uuid\":\"" + person + "\"" +
				"}";
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy