Package org.geoserver.web.security.service

Source Code of org.geoserver.web.security.service.NewServiceAccessRulePage$DuplicateRuleValidator

/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.web.security.service;

import java.util.logging.Level;

import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.validation.AbstractFormValidator;
import org.geoserver.security.ServiceAccessRule;
import org.geoserver.security.ServiceAccessRuleDAO;
import org.geoserver.web.wicket.ParamResourceModel;

/**
* Adds a new rule to the data access set
*/
@SuppressWarnings("serial")
public class NewServiceAccessRulePage extends AbstractServiceAccessRulePage {

  public NewServiceAccessRulePage() {
    super(new ServiceAccessRule());
    form.add(new DuplicateRuleValidator());
  }

  @Override
  protected void onFormSubmit() {
    try {
      String roles = parseRole(rolesForComponent.getRolePalette()
          .getModelObjectAsString());
      ServiceAccessRule rule = new ServiceAccessRule((String) service
          .getConvertedInput(), (String) method
          .getConvertedInput(), roles);
      ServiceAccessRuleDAO dao = ServiceAccessRuleDAO.get();
      dao.addRule(rule);
      dao.storeRules();
      setResponsePage(ServiceAccessRulePage.class);
    } catch (Exception e) {
      LOGGER.log(Level.SEVERE, "Error occurred while saving user", e);
      error(new ParamResourceModel("saveError", getPage(), e.getMessage()));
    }
  }

  private String parseRole(String modelObjectAsString) {
    return modelObjectAsString.substring(1,
        modelObjectAsString.length() - 1);
  }

  /**
   * Checks the same rule has not been entered before
   *
   * @author aaime
   *
   */
  class DuplicateRuleValidator extends AbstractFormValidator {
    public void validate(Form form) {
      ServiceAccessRule rule = new ServiceAccessRule((String) service
          .getConvertedInput(), (String) method
          .getConvertedInput(), rolesForComponent.getRolePalette()
          .getModelObjectAsString());
      if (ServiceAccessRuleDAO.get().getRules().contains(rule)) {
        form.error(new ParamResourceModel("duplicateRule", getPage(),
            rule.getKey()).getString());
      }
    }

    public FormComponent[] getDependentFormComponents() {
      return new FormComponent[] { service, method, rolesForComponent };
    }
  }

}
TOP

Related Classes of org.geoserver.web.security.service.NewServiceAccessRulePage$DuplicateRuleValidator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.