package org.wikiwebserver.distribute.se.gui;

import java.io.File;
import java.net.URL;

import org.wikiwebserver.distribute.se.ConfigManager;
import org.wikiwebserver.distribute.se.ResourceManager;

public class JGeneralConfigPanel extends JConfigPanel {
    
    private static final long serialVersionUID = 1L;    
	
	public void updateConfigDisplay() {
		addConfigFileOption("nodePath", true, fileValidator);		
		addConfigOption("nodeName", true, false, generalValidator);	

        String linkTitle = ResourceManager.getString("onlineAddressTitle");
        String linkDetail = ResourceManager.getString("onlineAddressDetail");
        
        URL fileSharingUrl = ConfigManager.getFileSharingUrl();
        if (fileSharingUrl != null) {
    		String onlineLink = fileSharingUrl.toExternalForm();
    		addLinkOption(linkTitle, linkDetail, onlineLink);
        }
	}	
	
	private final static SimpleValidator fileValidator = new SimpleValidator() {
        public String validate(String s) {
            if (!(new File(s)).exists()) {
                return "Path specified does not exist.";
            }
            if (!(new File(s)).canRead()) {
                return "Path specified can not be read.";
            }            
            
            return null;
        }
	};
	
	private final static SimpleValidator generalValidator = new SimpleValidator() {
        public String validate(String s) {
            if (s == null || s.length() == 0) {
                return "Please supply a value for this field.";  
            }            
            if (s.length() > 64) {
                return "Too many characters.";  
            }
            if (s.contains("<") || s.contains(">")) {
                return "The characters < and > are not permitted.";                
            }
            
            return null;
        }
    };	
}

