comparison src/main/java/app/bbs/NetworkJungleBulletinBoard.java @ 186:ef5045af0753

add permission .java
author tatsuki
date Tue, 16 Sep 2014 07:49:14 +0900
parents 4493dd7692ce
children f9b26747ef63
comparison
equal deleted inserted replaced
185:f54d4ab5df4b 186:ef5045af0753
1 package app.bbs; 1 package app.bbs;
2 2
3 import java.io.File; 3 import java.io.File;
4 import java.io.IOException; 4 import java.io.IOException;
5 import java.nio.ByteBuffer; 5 import java.nio.ByteBuffer;
6 import java.util.Iterator;
6 import java.util.concurrent.atomic.AtomicInteger; 7 import java.util.concurrent.atomic.AtomicInteger;
7 8
8 import fj.data.List; 9 import fj.data.List;
9 import fj.data.TreeMap; 10 import fj.data.TreeMap;
10 import alice.jungle.core.NetworkDefaultJungle; 11 import alice.jungle.core.NetworkDefaultJungle;
29 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; 30 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
30 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; 31 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
31 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; 32 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
32 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator; 33 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
33 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; 34 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
35 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
34 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal; 36 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
35 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; 37 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
36 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; 38 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
37 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; 39 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
38 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter; 40 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter;
730 Traversal traversal = ret.b(); 732 Traversal traversal = ret.b();
731 TreeNode target = traversal.destination(); 733 TreeNode target = traversal.destination();
732 return new getAttributeImp(target); 734 return new getAttributeImp(target);
733 } 735 }
734 736
737 public TreeNode search(JungleTree tree ,String searchAttribute,String key){
738 InterfaceTraverser ifTraverser = tree.getTraverser();
739 Iterator<Pair<TreeNode, NodePath>> searchNode = ifTraverser.find(
740 (TreeNode node) -> {
741 ByteBuffer attribute = node.getAttributes().get(key);
742 if(attribute != null){
743 byte[] byteAttribute = attribute.array();
744 String str = new String(byteAttribute);
745 System.out.println(str);
746 return str.equals(searchAttribute);
747 }
748 return false;
749 }
750 );
751
752 if (!searchNode.hasNext())
753 return null;
754 return searchNode.next().left();
755
756 }
757
758 public boolean compare(TreeNode compareNode, String compareAttribute) {
759 String labName = compareNode.getAttributes().getString("mes");
760 if (labName.equals(compareAttribute))
761 return true;
762
763 int loopCount = 0;
764 for (loopCount = 0 ;compareNode.getAttributes().getString("mes" + loopCount) != null; loopCount++ ) {
765 labName = compareNode.getAttributes().getString("mes" + loopCount);
766 if (labName.equals(compareAttribute))
767 return true;
768 }
769
770 return false;
771 }
772 public String searchJungle(String requestName , String approvalName) {
773 JungleTree tree = jungle.getTreeByName("人物");
774
775
776 TreeNode searchNode = search(tree , requestName,"mes");
777 if (searchNode == null)
778 return "申請者がデータに無い人物です";
779
780 if (!compare(searchNode, "河野研"))
781 return "河野研以外に所属している人は、この申請をすることが出来ません";
782
783
784 searchNode = search(tree , approvalName,"mes");
785 if (searchNode == null)
786 return "承認者がデータに無い人物です";
787
788 if (!compare(searchNode, "上位申請権限"))
789 return "権限がありません(この申請の承認は上位申請者である必要があります";
790
791 String position = searchNode.getAttributes().getString("mes1");
792
793 JungleTree grantTree = jungle.getTreeByName("役職");
794 searchNode = search(grantTree , position,"mes");
795
796 if (!compare(searchNode, "准教授権限") || !!compare(searchNode, "教授権限"))
797 return "権限がありません(この申請の承認は助教授か、教授である必要があります";
798
799 return "申請が受理されました";
800 }
801
802
735 public int getRequestNum() { 803 public int getRequestNum() {
736 return requestCounter.get(); 804 return requestCounter.get();
737 } 805 }
738 806
739 private static class BoardMessageImpl implements BoardMessage { 807 private static class BoardMessageImpl implements BoardMessage {