====
    Copyright 2014 Internet2

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
====

package edu.internet2.middleware.morphString;

/**
 * 
 */
import org.apache.tools.ant.Task;

/**
 * encrypt or decrypt passwords via ant
 * 
 * @author mchyzer
 */
public class MorphTask extends Task {

//  <taskdef name="grouper.password" classname="edu.internet2.middleware.grouper.util.rijndael.PasswordTask" >
//    <classpath refid="lib.class.path"/>
//    <classpath>
//      <pathelement location="${build.classes.dir}"/>  
//    </classpath>    
//  </taskdef>
//  <!-- task to encrypt the password -->
//  <target name="encryptPassword" description="encrypt a password for a properties file">
//      <input message="Please input the password to encrypt: "
//         addproperty="input.password" />
//      <pww.password action="encrypt" password="${input.password}" 
//         property="result.encryptedPassword" />
//      
//      <echo message="The encrypted password is: ${result.encryptedPassword}" />
// 
//  </target>

  
  /**
   * 
   */
  public MorphTask() {
    super();
  }
  
  /** encrypted or decrypted pass */
  private String password = null;
  
  /** where to put the answer */
  private String property = null;
  
  /**
   * encrypted or decrypted pass
   * @return the password
   */
  public String getPassword() {
    return this.password;
  }

  /**
   * encrypted or decrypted pass
   * @param thePassword
   */
  public void setPassword(String thePassword) {
    this.password = thePassword;
  }

  /**
   * where to put the answer
   * @return the property
   */
  public String getProperty() {
    return this.property;
  }

    /**
   * Runs the task
   * 
   * @see org.apache.tools.ant.Task#execute()
   */
  public void execute() {
    
    String newPass = null;
    
    try {
      newPass = Morph.encrypt(this.password);
    } catch (Exception e) {
      throw new RuntimeException("Problem with morph task, " + e.getMessage(), e);
    }
    getProject().setNewProperty(this.property, newPass);
  }

  /**
   * where to put the answer
   * 
   * @param theProperty
   */
  public void setProperty(String theProperty) {
    this.property = theProperty;
  }
  
  
  
}
