Changed the SimpleRegistry file

started to implement the different methods of this class (such as created basic messages)
vote-registry
Vladimir Eliezer Tokarev 2016-01-09 03:52:42 -08:00
parent 05871a2ea7
commit 51b9f9decd
2 changed files with 209 additions and 62 deletions

View File

@ -8,19 +8,18 @@ public abstract class RegistryTagTypes {
private RegistryTagTypes(){}
// The ID tag
public static final String ID_TYPE = "ID:";
public static final String ID_TAG = "ID:";
// The Voter Entry Tag
public static final String VOTER_ENTRY_TAG = "Voter Entry:";
public static final String VOTER_ENTRY_TAG = "Voter Entry";
// THE Group ID Tag
public static final String GROUP_ID_TAG = "Group ID:";
// The Group Action Tag
public static final String GROUP_ACTION_TAG = "Group Action:";
// The Vote Action Tag
public static final String VOTE_ACTION_TAG = "Vote Action:";
public static final String REMOVE_FROM_GROUP_TAG = "Remove From Group";
public static final String ADD_TO_GROUP_TAG = "Add To Group";
public static final String VOTE_ACTION_TAG = "Vote Action";
}

View File

@ -1,8 +1,18 @@
package meerkat;
import meerkat.ProtobufsMessages.*;
import meerkat.comm.CommunicationException;
import com.google.protobuf.*;
import meerkat.ProtobufsMessages.BasicMessage;
import meerkat.ProtobufsMessages.BulletinBoardMessage;
import meerkat.ProtobufsMessages.Tag;
import meerkat.bulletinboard.BulletinBoardClient;
import meerkat.comm.CommunicationException;
import meerkat.crypto.DigitalSignature;
import meerkat.protobuf.BulletinBoardAPI;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
/**
* Created by Vladimir Eliezer Tokarev on 1/8/2016.
@ -11,92 +21,230 @@ import java.util.List;
*/
public class SimpleRegistry {
public SimpleRegistry(){
// inits the encoding object
// inits the connection data
protected DigitalSignature signatory;
protected BulletinBoardClient communicator;
/**
* @param signatory implements the DigitalSignature interface
* @param communicator implements the BulletinBoardClient interface
*/
public SimpleRegistry(DigitalSignature signatory, BulletinBoardClient communicator){
this.signatory = signatory;
this.communicator = communicator;
}
/**
* Tries to add new voter to the bulletin-board
* Adds new voter to the bulletin-board
* @param voterID
* @param personalData for example residence location
* @throws throws CommunicationException
* @return true if the adding action succeeded else return false
* @return void
*/
public boolean AddVoter(String voterID, String personalData) throws CommunicationException {
/**
* try:
* Create basic message for adding new voter
* Create bulletin board message using CreateBulletinBoardMessage
* use SimpleBulletinBoardClient.PostMessage to send the message
* return true
* catch exception:
* return false
*/
public void AddVoter(String voterID, String personalData) throws CommunicationException {
Tag.Builder idTag = Tag.newBuilder();
idTag.setContent(RegistryTagTypes.ID_TAG + " " + voterID);
Tag.Builder voterEntryTag = Tag.newBuilder();
voterEntryTag.setContent(RegistryTagTypes.VOTER_ENTRY_TAG);
BasicMessage.Builder basicMessage = BasicMessage.newBuilder();
basicMessage.setData(ByteString.copyFrom(personalData.getBytes()));
basicMessage.addTag(idTag);
basicMessage.addTag(voterEntryTag);
communicator.postMessage(CreateBulletinBoardMessage(basicMessage), null);
}
/**
* Tries adding given voter to given group
* Adding given voter to given group
* @param voterID
* @param groupID
* @throws CommunicationException
* @return true if the adding action succeeded else return false
*/
public boolean AddToGroup(String voterID, String groupID) throws CommunicationException {
/**
* try:
* Create basic message for adding the given voter to the wanted group
* Create bulletin board message using CreateBulletinBoardMessage
* use SimpleBulletinBoardClient.PostMessage to send the message
* return true
* catch exception:
* return false
*/
public void AddToGroup(String voterID, String groupID) throws CommunicationException {
Tag.Builder idTag = Tag.newBuilder();
idTag.setContent(RegistryTagTypes.ID_TAG + " " + voterID);
Tag.Builder groupIDTag = Tag.newBuilder();
groupIDTag.setContent(RegistryTagTypes.GROUP_ID_TAG + " " + groupID);
Tag.Builder actionTag = Tag.newBuilder();
actionTag.setContent(RegistryTagTypes.GROUP_ACTION_TAG + " " + RegistryTagTypes.ADD_TO_GROUP_TAG);
BasicMessage.Builder basicMessage = BasicMessage.newBuilder();
basicMessage.addTag(idTag);
basicMessage.addTag(groupIDTag);
basicMessage.addTag(actionTag);
communicator.postMessage(CreateBulletinBoardMessage(basicMessage), null);
}
/**
* Tries remove given voter from given group
* Removes given voter from given group
* @param voterID
* @param groupID
* @return true if the removing action succeeded else return false
* @throws CommunicationException
*/
public boolean RemoveFromGroup(String voterID, String groupID) throws CommunicationException {
/**
* try:
* Create basic message for removing the given voter from the wanted group
* Create bulletin board message using CreateBulletinBoardMessage
* use SimpleBulletinBoardClient.PostMessage to send the message
* return true
* catch exception:
* return false
*/
public void RemoveFromGroup(String voterID, String groupID) throws CommunicationException {
Tag.Builder idTag = Tag.newBuilder();
idTag.setContent(RegistryTagTypes.ID_TAG + " " + voterID);
Tag.Builder groupIDTag = Tag.newBuilder();
groupIDTag.setContent(RegistryTagTypes.GROUP_ID_TAG + " " + groupID);
Tag.Builder actionTag = Tag.newBuilder();
actionTag.setContent(RegistryTagTypes.GROUP_ACTION_TAG + " " + RegistryTagTypes.REMOVE_FROM_GROUP_TAG);
BasicMessage.Builder basicMessage = BasicMessage.newBuilder();
basicMessage.addTag(idTag);
basicMessage.addTag(groupIDTag);
basicMessage.addTag(actionTag);
communicator.postMessage(CreateBulletinBoardMessage(basicMessage), null);
}
/**
* Tries to set that the voter have voted
* Sets that the voter have voted
* @param id
* @return true if the set voted succeded else false
* @throws CommunicationException
*/
public boolean SetVoted(String id) throws CommunicationException {
/**
* try:
* Create basic message set voted
* Create bulletin board message using CreateBulletinBoardMessage
* use SimpleBulletinBoardClient.PostMessage to send the message
* return true
* catch exception:
* return false
*/
public void SetVoted(String id) throws CommunicationException {
Tag.Builder idTag = Tag.newBuilder();
idTag.setContent(RegistryTagTypes.ID_TAG + " " + id);
Tag.Builder voteAction = Tag.newBuilder();
voteAction.setContent(RegistryTagTypes.VOTE_ACTION_TAG);
BasicMessage.Builder basicMessage = BasicMessage.newBuilder();
basicMessage.addTag(idTag);
basicMessage.addTag(voteAction);
communicator.postMessage(CreateBulletinBoardMessage(basicMessage), null);
}
/**
* Craetes bulletin board message from basic message (with the signatures parts)
* @param basicMessage array of bytes
* @return
* Creates bulletin board message from basic message (with the signatures parts)
* @param basicMessage BasicMessage.Builder
* @return BulletinBoardAPI.BulletinBoardMessage
*/
private byte[] CreateBulletinBoardMessage(byte[] basicMessage) {
private BulletinBoardAPI.BulletinBoardMessage CreateBulletinBoardMessage(BasicMessage.Builder basicMessage) {
BulletinBoardMessage.Builder bulletinBoardmessage = BulletinBoardMessage.newBuilder();
Message encodableMessage = new Message() {
@Override
public Parser<? extends Message> getParserForType() {
return null;
}
@Override
public Builder newBuilderForType() {
return null;
}
@Override
public Builder toBuilder() {
return null;
}
@Override
public void writeTo(CodedOutputStream output) throws IOException {
}
@Override
public int getSerializedSize() {
return 0;
}
@Override
public ByteString toByteString() {
return null;
}
@Override
public byte[] toByteArray() {
return new byte[0];
}
@Override
public void writeTo(OutputStream output) throws IOException {
}
@Override
public void writeDelimitedTo(OutputStream output) throws IOException {
}
@Override
public Message getDefaultInstanceForType() {
return null;
}
@Override
public List<String> findInitializationErrors() {
return null;
}
@Override
public String getInitializationErrorString() {
return null;
}
@Override
public Descriptors.Descriptor getDescriptorForType() {
return null;
}
@Override
public Map<Descriptors.FieldDescriptor, Object> getAllFields() {
return null;
}
@Override
public boolean hasOneof(Descriptors.OneofDescriptor oneof) {
return false;
}
@Override
public Descriptors.FieldDescriptor getOneofFieldDescriptor(Descriptors.OneofDescriptor oneof) {
return null;
}
@Override
public boolean hasField(Descriptors.FieldDescriptor field) {
return false;
}
@Override
public Object getField(Descriptors.FieldDescriptor field) {
return null;
}
@Override
public int getRepeatedFieldCount(Descriptors.FieldDescriptor field) {
return 0;
}
@Override
public Object getRepeatedField(Descriptors.FieldDescriptor field, int index) {
return null;
}
@Override
public UnknownFieldSet getUnknownFields() {
return null;
}
@Override
public boolean isInitialized() {
return false;
}
}
/**
* encode the basic message
* create bulletin board message