Ignore:
Timestamp:
08/11/14 16:07:55 (10 years ago)
Author:
olhsha@mpi.nl
Message:

Added group service. Tested via the tomcat on loclahots (test URI and postman), old unit tests are adjusted and work well. Todo: retest on localhost tomcat, look at run-time exceptions, add new unit tests, adjust front-end

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ComponentRegistry/trunk/ComponentRegistry/src/main/java/clarin/cmdi/componentregistry/frontend/AdminHomePage.java

    r4098 r5549  
    2929import clarin.cmdi.componentregistry.ComponentRegistryException;
    3030import clarin.cmdi.componentregistry.ComponentRegistryFactory;
    31 import clarin.cmdi.componentregistry.ComponentStatus;
    3231import clarin.cmdi.componentregistry.MDMarshaller;
     32import clarin.cmdi.componentregistry.RegistrySpace;
     33import clarin.cmdi.componentregistry.UserUnauthorizedException;
    3334import clarin.cmdi.componentregistry.impl.database.AdminRegistry;
    3435import clarin.cmdi.componentregistry.model.BaseDescription;
     
    4344    private final static Logger LOG = LoggerFactory.getLogger(AdminHomePage.class);
    4445    private final CMDItemInfo info;
    45     private final LinkTree tree;
     46    private LinkTree tree;
    4647    private transient AdminRegistry adminRegistry = new AdminRegistry();
    4748    @SpringBean(name = "componentRegistryFactory")
     
    5354
    5455    public AdminHomePage(final PageParameters parameters) throws ComponentRegistryException {
    55         super(parameters);
    56         adminRegistry.setComponentRegistryFactory(componentRegistryFactory);
    57         adminRegistry.setComponentDao(componentDao);
    58         adminRegistry.setMarshaller(marshaller);
    59         info = new CMDItemInfo(marshaller);
    60         addLinks();
    61         final FeedbackPanel feedback = new FeedbackPanel("feedback");
    62         feedback.setOutputMarkupId(true);
    63         add(feedback);
    64         Form form = new ItemEditForm("form");
    65         add(form);
    66 
    67         Button deleteButton = new AjaxFallbackButton("delete", form) {
    68 
    69             @Override
    70             protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
    71                 CMDItemInfo info = (CMDItemInfo) form.getModelObject();
    72                 info("deleting:" + info.getName());
    73                 Principal userPrincipal = getWebRequest().getHttpServletRequest().getUserPrincipal();
    74                 try {
    75                     adminRegistry.delete(info, userPrincipal);
    76                     info("Item deleted.");
    77                     reloadTreeModel(info);
    78                 } catch (SubmitFailedException e) {
    79                     LOG.error("Admin: ", e);
    80                     error("Cannot delete: " + info.getName() + "\n error=" + e);
    81                 }
    82                 if (target != null) {
    83                     target.addComponent(form);
    84                     target.addComponent(tree);
    85                     target.addComponent(feedback);
    86                 }
    87             }
    88 
    89             @Override
    90             public boolean isEnabled() {
    91                 return info.isDeletable();
    92 
    93             }
    94         ;
    95         };
     56        super(parameters);
     57        adminRegistry.setComponentRegistryFactory(componentRegistryFactory);
     58        adminRegistry.setComponentDao(componentDao);
     59        adminRegistry.setMarshaller(marshaller);
     60        info = new CMDItemInfo(marshaller);
     61        addLinks();
     62        final FeedbackPanel feedback = new FeedbackPanel("feedback");
     63        feedback.setOutputMarkupId(true);
     64        add(feedback);
     65        Form form = new ItemEditForm("form");
     66        add(form);
     67
     68        Button deleteButton = new AjaxFallbackButton("delete", form) {
     69            @Override
     70            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
     71                CMDItemInfo info = (CMDItemInfo) form.getModelObject();
     72                info("deleting:" + info.getName());
     73                Principal userPrincipal = getWebRequest().getHttpServletRequest().getUserPrincipal();
     74                try {
     75                    adminRegistry.delete(info, userPrincipal);
     76                    info("Item deleted.");
     77                    reloadTreeModel(info);
     78                } catch (Exception e) {
     79                    LOG.error("Admin: ", e);
     80                    error("Cannot delete: " + info.getName() + "\n error=" + e);
     81                }
     82                if (target != null) {
     83                    target.addComponent(form);
     84                    target.addComponent(tree);
     85                    target.addComponent(feedback);
     86                }
     87            }
     88
     89            @Override
     90            public boolean isEnabled() {
     91                return info.isDeletable();
     92
     93            }
     94        ;
     95        };
    9696        form.add(deleteButton);
    9797
    98         Button undeleteButton = new AjaxFallbackButton("undelete", form) {
    99 
    100             @Override
    101             protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
    102                 CMDItemInfo info = (CMDItemInfo) form.getModelObject();
    103                 info("undeleting:" + info.getName());
    104                 try {
    105                     adminRegistry.undelete(info);
    106                     info("Item put back.");
    107                     reloadTreeModel(info);
    108                 } catch (SubmitFailedException e) {
    109                     LOG.error("Admin: ", e);
    110                     error("Cannot undelete: " + info.getName() + "\n error=" + e);
    111                 }
    112                 if (target != null) {
    113                     target.addComponent(form);
    114                     target.addComponent(tree);
    115                     target.addComponent(feedback);
    116                 }
    117             }
    118 
    119             @Override
    120             public boolean isEnabled() {
    121                 return info.isUndeletable();
    122             }
    123         };
    124         form.add(undeleteButton);
    125 
    126         CheckBox forceUpdateCheck = new CheckBox("forceUpdate");
    127         form.add(forceUpdateCheck);
    128 
    129         Button submitButton = new AjaxFallbackButton("submit", form) {
    130 
    131             @Override
    132             protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
    133                 CMDItemInfo info = (CMDItemInfo) form.getModelObject();
    134                 Principal userPrincipal = getWebRequest().getHttpServletRequest().getUserPrincipal();
    135                 info("submitting:" + info.getName() + " id=(" + info.getDataNode().getDescription().getId() + ")");
    136                 try {
    137                     adminRegistry.submitFile(info, userPrincipal);
    138                     info("submitting done.");
    139                     reloadTreeModel(info);
    140                 } catch (SubmitFailedException e) {
    141                     LOG.error("Admin: ", e);
    142                     error("Cannot submit: " + info.getName() + "\n error=" + e);
    143                 }
    144                 if (target != null) {
    145                     target.addComponent(form);
    146                     target.addComponent(tree);
    147                     target.addComponent(feedback);
    148                 }
    149             }
    150 
    151             @Override
    152             public boolean isEnabled() {
    153                 return info.isEditable();
    154             }
    155         };
    156         form.add(submitButton);
    157 
    158         tree = createTree("tree", form, createDBTreeModel());
    159         add(tree);
    160         add(new Link("expandAll") {
    161 
    162             @Override
    163             public void onClick() {
    164                 tree.getTreeState().expandAll();
    165             }
    166         });
    167 
    168         add(new Link("collapseAll") {
    169 
    170             @Override
    171             public void onClick() {
    172                 tree.getTreeState().collapseAll();
    173             }
    174         });
    175 
    176     }
    177 
    178     private void reloadTreeModel(CMDItemInfo info) {
    179         try {
    180             tree.setModelObject(createDBTreeModel());
    181         } catch (ComponentRegistryException e) {
    182             LOG.error("Admin: ", e);
    183             error("Cannot reload tree: " + info.getName() + "\n error=" + e);
    184         }
     98        Button undeleteButton = new AjaxFallbackButton("undelete", form) {
     99            @Override
     100            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
     101                CMDItemInfo info = (CMDItemInfo) form.getModelObject();
     102                info("undeleting:" + info.getName());
     103                try {
     104                    adminRegistry.undelete(info);
     105                    info("Item put back.");
     106                    reloadTreeModel(info);
     107                } catch (Exception e) {
     108                    LOG.error("Admin: ", e);
     109                    error("Cannot undelete: " + info.getName() + "\n error=" + e);
     110                }
     111                if (target != null) {
     112                    target.addComponent(form);
     113                    target.addComponent(tree);
     114                    target.addComponent(feedback);
     115                }
     116            }
     117
     118            @Override
     119            public boolean isEnabled() {
     120                return info.isUndeletable();
     121            }
     122        };
     123        form.add(undeleteButton);
     124
     125        CheckBox forceUpdateCheck = new CheckBox("forceUpdate");
     126        form.add(forceUpdateCheck);
     127
     128        Button submitButton = new AjaxFallbackButton("submit", form) {
     129            @Override
     130            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
     131                CMDItemInfo info = (CMDItemInfo) form.getModelObject();
     132                Principal userPrincipal = getWebRequest().getHttpServletRequest().getUserPrincipal();
     133                info("submitting:" + info.getName() + " id=(" + info.getDataNode().getDescription().getId() + ")");
     134                try {
     135                    adminRegistry.submitFile(info, userPrincipal);
     136                    info("submitting done.");
     137                    reloadTreeModel(info);
     138                } catch (Exception e) {
     139                    LOG.error("Admin: ", e);
     140                    error("Cannot submit: " + info.getName() + "\n error=" + e);
     141                }
     142                if (target != null) {
     143                    target.addComponent(form);
     144                    target.addComponent(tree);
     145                    target.addComponent(feedback);
     146                }
     147            }
     148
     149            @Override
     150            public boolean isEnabled() {
     151                return info.isEditable();
     152            }
     153        };
     154        form.add(submitButton);
     155
     156
     157
     158
     159        try {
     160            tree = createTree("tree", form, createDBTreeModel());
     161            add(tree);
     162            add(new Link("expandAll") {
     163                @Override
     164                public void onClick() {
     165                    tree.getTreeState().expandAll();
     166                }
     167            });
     168
     169            add(new Link("collapseAll") {
     170                @Override
     171                public void onClick() {
     172                    tree.getTreeState().collapseAll();
     173                }
     174            });
     175
     176        } catch (UserUnauthorizedException e) {           
     177            LOG.error("Admin: ", e);
     178            error("Cannot create tree: error = " + e);
     179        }
     180       
     181    }
     182
     183    private void reloadTreeModel(CMDItemInfo info) throws UserUnauthorizedException {
     184        try {
     185            tree.setModelObject(createDBTreeModel());
     186        } catch (ComponentRegistryException e) {
     187            LOG.error("Admin: ", e);
     188            error("Cannot reload tree: " + info.getName() + "\n error=" + e);
     189        }
    185190    }
    186191
    187192    private void addLinks() {
    188         add(new Label("linksMessage", "Browse the data below or choose on of the following options:"));
    189         add(new Link("massMigrate") {
    190 
    191             @Override
    192             public void onClick() {
    193                 setResponsePage(MassMigratePage.class);
    194             }
    195         });
    196         add(new Link("log") {
    197 
    198             @Override
    199             public void onClick() {
    200                 setResponsePage(ViewLogPage.class);
    201             }
    202         });
    203         add(new Link("statistics") {
    204 
    205             @Override
    206             public void onClick() {
    207                 setResponsePage(StatisticsPage.class);
    208             }
    209         });
     193        add(new Label("linksMessage", "Browse the data below or choose on of the following options:"));
     194        add(new Link("massMigrate") {
     195            @Override
     196            public void onClick() {
     197                setResponsePage(MassMigratePage.class);
     198            }
     199        });
     200        add(new Link("log") {
     201            @Override
     202            public void onClick() {
     203                setResponsePage(ViewLogPage.class);
     204            }
     205        });
     206        add(new Link("statistics") {
     207            @Override
     208            public void onClick() {
     209                setResponsePage(StatisticsPage.class);
     210            }
     211        });
    210212    }
    211213
    212214    private LinkTree createTree(String id, final Form form, TreeModel treeModel) {
    213         final LinkTree adminTree = new LinkTree(id, treeModel) {
    214 
    215             @Override
    216             protected void onNodeLinkClicked(Object node, BaseTree tree, AjaxRequestTarget target) {
    217                 super.onNodeLinkClicked(node, tree, target);
    218                 ITreeState treeState = tree.getTreeState();
    219                 if (treeState.isNodeExpanded(node)) {
    220                     treeState.collapseNode(node);
    221                 } else {
    222                     treeState.expandNode(node);
    223                 }
    224                 DisplayDataNode dn = (DisplayDataNode) ((DefaultMutableTreeNode) node).getUserObject();
    225                 info.setDataNode(dn);
    226                 BaseDescription desc = dn.getDescription();
    227                 if (desc != null) {
    228                     String content = componentDao.getContent(dn.isDeleted(), desc.getId());
    229                     info.setContent(content);
    230                 }
    231                 if (target != null) {
    232                     target.addComponent(form);
    233                 }
    234             }
    235         };
    236         return adminTree;
     215        final LinkTree adminTree = new LinkTree(id, treeModel) {
     216            @Override
     217            protected void onNodeLinkClicked(Object node, BaseTree tree, AjaxRequestTarget target) {
     218                super.onNodeLinkClicked(node, tree, target);
     219                ITreeState treeState = tree.getTreeState();
     220                if (treeState.isNodeExpanded(node)) {
     221                    treeState.collapseNode(node);
     222                } else {
     223                    treeState.expandNode(node);
     224                }
     225                DisplayDataNode dn = (DisplayDataNode) ((DefaultMutableTreeNode) node).getUserObject();
     226                info.setDataNode(dn);
     227                BaseDescription desc = dn.getDescription();
     228                if (desc != null) {
     229                    String content = componentDao.getContent(dn.isDeleted(), desc.getId());
     230                    info.setContent(content);
     231                }
     232                if (target != null) {
     233                    target.addComponent(form);
     234                }
     235            }
     236        };
     237        return adminTree;
    237238    }
    238239
    239240    private class ItemEditForm extends Form<CMDItemInfo> {
    240241
    241         public ItemEditForm(String name) {
    242             super(name);
    243             CompoundPropertyModel model = new CompoundPropertyModel(info);
    244             setModel(model);
    245 
    246             TextArea descriptionArea = new TextArea("description");
    247             descriptionArea.setOutputMarkupId(true);
    248             add(descriptionArea);
    249             TextArea contentArea = new TextArea("content");
    250             contentArea.setOutputMarkupId(true);
    251             add(contentArea);
    252         }
    253     }
    254 
    255     private TreeModel createDBTreeModel() throws ComponentRegistryException {
    256         DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(new DisplayDataNode("ComponentRegistry", false));
    257         DefaultMutableTreeNode publicNode = new DefaultMutableTreeNode(new DisplayDataNode("Public", false));
    258         rootNode.add(publicNode);
    259         ComponentRegistry publicRegistry = componentRegistryFactory.getPublicRegistry();
    260         add(publicNode, publicRegistry);
    261         List<ComponentRegistry> userRegistries = componentRegistryFactory.getAllUserRegistries();
    262         for (ComponentRegistry registry : userRegistries) {
    263             DefaultMutableTreeNode userNode = new DefaultMutableTreeNode(new DisplayDataNode(registry.getName(), false));
    264             rootNode.add(userNode);
    265             add(userNode, registry);
    266         }
    267         TreeModel model = new DefaultTreeModel(rootNode);
    268         return model;
    269     }
    270 
    271     private void add(DefaultMutableTreeNode parent, ComponentRegistry registry) throws ComponentRegistryException {
    272         DefaultMutableTreeNode componentsNode = new DefaultMutableTreeNode(new DisplayDataNode("Components", false));
    273         parent.add(componentsNode);
    274         add(componentsNode, registry.getComponentDescriptions(), false, registry.getStatus());
    275 
    276         DefaultMutableTreeNode profilesNode = new DefaultMutableTreeNode(new DisplayDataNode("Profiles", false));
    277         parent.add(profilesNode);
    278         add(profilesNode, registry.getProfileDescriptions(), false, registry.getStatus());
    279 
    280         DefaultMutableTreeNode deletedCompNode = new DefaultMutableTreeNode(new DisplayDataNode("Deleted Components", true));
    281         parent.add(deletedCompNode);
    282 
    283         List<ComponentDescription> deletedComponentDescriptions = registry.getDeletedComponentDescriptions();
    284         add(deletedCompNode, deletedComponentDescriptions, true, registry.getStatus());
    285 
    286         DefaultMutableTreeNode deletedProfNode = new DefaultMutableTreeNode(new DisplayDataNode("Deleted Profiles", true));
    287         parent.add(deletedProfNode);
    288         List<ProfileDescription> deletedProfileDescriptions = registry.getDeletedProfileDescriptions();
    289         add(deletedProfNode, deletedProfileDescriptions, true, registry.getStatus());
    290     }
    291 
    292     private void add(DefaultMutableTreeNode parent, List<? extends BaseDescription> descs, boolean isDeleted, ComponentStatus status) {
    293         for (BaseDescription desc : descs) {
    294             DefaultMutableTreeNode child = new DefaultMutableTreeNode(new DisplayDataNode(desc.getName(), isDeleted, desc, status));
    295             parent.add(child);
    296         }
     242        public ItemEditForm(String name) {
     243            super(name);
     244            CompoundPropertyModel model = new CompoundPropertyModel(info);
     245            setModel(model);
     246
     247            TextArea descriptionArea = new TextArea("description");
     248            descriptionArea.setOutputMarkupId(true);
     249            add(descriptionArea);
     250            TextArea contentArea = new TextArea("content");
     251            contentArea.setOutputMarkupId(true);
     252            add(contentArea);
     253        }
     254    }
     255
     256    private TreeModel createDBTreeModel() throws ComponentRegistryException, UserUnauthorizedException {
     257        DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(new DisplayDataNode("ComponentRegistry", false));
     258        DefaultMutableTreeNode publicNode = new DefaultMutableTreeNode(new DisplayDataNode("Public", false));
     259        rootNode.add(publicNode);
     260        ComponentRegistry publicRegistry = componentRegistryFactory.getPublicRegistry();
     261        add(publicNode, publicRegistry);
     262        List<ComponentRegistry> userRegistries = componentRegistryFactory.getAllUserRegistries();
     263        for (ComponentRegistry registry : userRegistries) {
     264            DefaultMutableTreeNode userNode = new DefaultMutableTreeNode(new DisplayDataNode(registry.getName(), false));
     265            rootNode.add(userNode);
     266            add(userNode, registry);
     267        }
     268        TreeModel model = new DefaultTreeModel(rootNode);
     269        return model;
     270    }
     271
     272    private void add(DefaultMutableTreeNode parent, ComponentRegistry registry) throws ComponentRegistryException, UserUnauthorizedException {
     273        DefaultMutableTreeNode componentsNode = new DefaultMutableTreeNode(new DisplayDataNode("Components", false));
     274        parent.add(componentsNode);
     275        add(componentsNode, registry.getComponentDescriptions(), false, registry.getRegistrySpace());
     276
     277        DefaultMutableTreeNode profilesNode = new DefaultMutableTreeNode(new DisplayDataNode("Profiles", false));
     278        parent.add(profilesNode);
     279        add(profilesNode, registry.getProfileDescriptions(), false, registry.getRegistrySpace());
     280
     281        DefaultMutableTreeNode deletedCompNode = new DefaultMutableTreeNode(new DisplayDataNode("Deleted Components", true));
     282        parent.add(deletedCompNode);
     283
     284        List<ComponentDescription> deletedComponentDescriptions = registry.getDeletedComponentDescriptions();
     285        add(deletedCompNode, deletedComponentDescriptions, true, registry.getRegistrySpace());
     286
     287        DefaultMutableTreeNode deletedProfNode = new DefaultMutableTreeNode(new DisplayDataNode("Deleted Profiles", true));
     288        parent.add(deletedProfNode);
     289        List<ProfileDescription> deletedProfileDescriptions = registry.getDeletedProfileDescriptions();
     290        add(deletedProfNode, deletedProfileDescriptions, true, registry.getRegistrySpace());
     291    }
     292
     293    private void add(DefaultMutableTreeNode parent, List<? extends BaseDescription> descs, boolean isDeleted, RegistrySpace space) {
     294        for (BaseDescription desc : descs) {
     295            DefaultMutableTreeNode child = new DefaultMutableTreeNode(new DisplayDataNode(desc.getName(), isDeleted, desc, space));
     296            parent.add(child);
     297        }
    297298    }
    298299}
Note: See TracChangeset for help on using the changeset viewer.