/*
 * Copyright 2012 Stängsen.
 *
 * 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 org.aegee.runanddine.archive;

import org.aegee.runanddine.util.model.Model;

/**
 * Model for persistent ArchiveEntries
 * @author c_stangohr
 */
public final class ArchiveEntry extends Model {
    
    /**
     * Manager for ArchiveEntries
     */
    public static final ArchiveEntryManager OBJECTS = ArchiveEntryManager.getInstance();
    
    private static final long serialVersionUID = 1L;
    
    /**
     * Model fields
     */
    private String firstname, lastname, email;
   
    /**
     * Model flags
     */
    private boolean aegeeMailFlag, radMailFlag;
    
    /**
     * Default constructor
     */
    public ArchiveEntry() {
    }

    /**
     * 
     * @param firstname  firstname of participant
     * @param lastname   lastname of participant
     * @param email  email-address of participant
     * @param aegeeMailFlag shows whether participant wish to get aegeeMail or not
     * @param radMailFlag shows whether participant wish to get runandDine advertisement mails or not
     */
    public ArchiveEntry( String firstname, String lastname, String email, boolean aegeeMailFlag,  boolean radMailFlag ) {
      this.firstname = firstname;
      this.lastname =lastname;
      this.email = email;
      this.aegeeMailFlag = aegeeMailFlag;
      this.radMailFlag = radMailFlag;
    }

    /**
     * Get firstname of participant
     * @return the firstname
     */
    public String getFirstname() {
        return firstname;
    }

    /**
     * Set firstname of participant
     * @param firstname the firstname to set
     */
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    /**
     * Get lastname of participant
     * @return the lastname
     */
    public String getLastname() {
        return lastname;
    }

    /**
     * Set lastname of participant
     * @param lastname the lastname to set
     */
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    /**
     * Get email of participant
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * Set email of participant
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * Check whether participant wants to get aegeeMail
     * @return the aegeeMailFlag
     */
    public boolean isAegeeMailFlag() {
        return aegeeMailFlag;
    }

    /**
     * Set whether participant wants to get aegeeMail
     * @param aegeeMailFlag the aegeeMailFlag to set
     */
    public void setAegeeMailFlag(boolean aegeeMailFlag) {
        this.aegeeMailFlag = aegeeMailFlag;
    }

    /**
     * Get whether participant wants to get runAndDineMails
     * @return the radMailFlag
     */
    public boolean isRadMailFlag() {
        return radMailFlag;
    }

    /**
     * Set whether participant wants to get runAndDineMails
     * @param radMailFlag the radMailFlag to set
     */
    public void setRadMailFlag(boolean radMailFlag) {
        this.radMailFlag = radMailFlag;
    }

    /**
     * Conversion to string for debugging
     * @return Debug information
     */
    @Override
    public String toString() {
        return String.format("%s %s, %s, aegee: %s, RaD: %s", firstname, lastname, email, aegeeMailFlag, radMailFlag);
    }
}
