package cz.muni.fi.rtc.teacherWorkbench.importer;

/**
 * Interface defining configuration. 
 * Instances implementing this interfaces are used for passing configuration to the Teacher Workbench classes.
 * @author Jan Stastny
 *
 */
public interface ImporterConfiguration {
	
	/**
	 * Get the LDAP address (IP or hostname)
	 * @return LDAP address
	 */
	public String getLdapServer();
	
	/**
	 * Get LDAP server port
	 * @return LDAP server port
	 */
	public int getLdapPort();
	
	/**
	 * LDAP server base DN. Connection will bind to it.
	 * @return base DN
	 */
	public String getLdapBaseDN();
	
	/**
	 * DN of the LDAP administrator
	 * @return LDAP admin DN
	 */
	public String getLdapAdminDN();
	
	/**
	 * LDAP administrator password in plaintext
	 * @return LDAP administrator password
	 */
	public String getLdapAdminPassword();
	
	/**
	 * DN of the LDAP group where the users are stored
	 * @return DN of the LDAP group where the users are stored
	 */
	public String getLdapGroupPeople();
	
	/**
	 * DN of the LDAP group mapped to JazzUsers group in RTC 
	 * @return DN of the LDAP group mapped to JazzUsers group in RTC
	 */
	public String getLdapGroupJazzUsers();
	
	/**
	 * RTC server URL, for example https://localhost:9443/jazz
	 * @return RTC server URL
	 */
	public String getRtcAddress();
	
	/**
	 * RTC administrator name. User needs to be in the JazzAdmins group to be allowed to do all the operations
	 * @return RTC administrator username
	 */
	public String getRtcAdminUser();
	
	/**
	 * RTC administrator password (plaintext)
	 * @return RTC administrator password 
	 */
	public String getRtcAdminPassword();
	
	/**
	 * SMTP host used for email announcements
	 * @return SMTP host
	 */
	public String getSmtpHost();
	
	/**
	 * STMP port
	 * @return SMTP port
	 */
	public int getSmtpPort();

	/**
	 * Whether to use TLS or not
	 * @return Use tls
	 */
	public boolean getSmtpTls();
	
	/**
	 * Email address from which the emails are sent
	 * @return email address
	 */
	public String getEmailFromAddress();
	
	/**
	 * Name from which the emails are sent
	 * @return Name
	 */
	public String getEmailFromName();
	
	/**
	 * SMTP Auth username. Authentication not used if empty
	 * @return STMP user 
	 */
	public String getSmtpUser();
	
	/**
	 * STMP Auth password
	 * @return SMTP password
	 */
	public String getSmtpPassword();
	
}