View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.client.console.panels;
20  
21  import org.apache.syncope.client.console.SyncopeConsoleSession;
22  import org.apache.syncope.client.console.pages.BasePage;
23  import org.apache.syncope.client.console.rest.ApplicationRestClient;
24  import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
25  import org.apache.syncope.client.ui.commons.Constants;
26  import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
27  import org.apache.syncope.common.lib.to.ApplicationTO;
28  import org.apache.wicket.PageReference;
29  import org.apache.wicket.ajax.AjaxRequestTarget;
30  import org.apache.wicket.model.PropertyModel;
31  import org.apache.wicket.spring.injection.annot.SpringBean;
32  
33  public class ApplicationModalPanel extends AbstractModalPanel<ApplicationTO> {
34  
35      private static final long serialVersionUID = 4575264480736377795L;
36  
37      @SpringBean
38      protected ApplicationRestClient applicationRestClient;
39  
40      protected final ApplicationTO application;
41  
42      protected final boolean create;
43  
44      public ApplicationModalPanel(
45              final ApplicationTO application,
46              final boolean create,
47              final BaseModal<ApplicationTO> modal,
48              final PageReference pageRef) {
49  
50          super(modal, pageRef);
51          this.application = application;
52          this.create = create;
53  
54          modal.setFormModel(application);
55  
56          AjaxTextFieldPanel key = new AjaxTextFieldPanel(
57                  Constants.KEY_FIELD_NAME,
58                  Constants.KEY_FIELD_NAME,
59                  new PropertyModel<>(application, Constants.KEY_FIELD_NAME), false);
60          key.setReadOnly(!create);
61          key.setRequired(true);
62          add(key);
63  
64          AjaxTextFieldPanel description = new AjaxTextFieldPanel(
65                  Constants.DESCRIPTION_FIELD_NAME, Constants.DESCRIPTION_FIELD_NAME,
66                  new PropertyModel<>(application, Constants.DESCRIPTION_FIELD_NAME), false);
67          description.setRequired(false);
68          add(description);
69      }
70  
71      @Override
72      public ApplicationTO getItem() {
73          return application;
74      }
75  
76      @Override
77      public void onSubmit(final AjaxRequestTarget target) {
78          try {
79              if (create) {
80                  applicationRestClient.create(application);
81              } else {
82                  applicationRestClient.update(application);
83              }
84              SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
85              this.modal.close(target);
86          } catch (Exception e) {
87              LOG.error("While creating/updating application", e);
88              SyncopeConsoleSession.get().onException(e);
89          }
90          ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
91      }
92  }