Mercurial > hg > Members > nobuyasu > jungle-network
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 { |