ch.cyberduck.core.aquaticprime.License.java Source code

Java tutorial

Introduction

Here is the source code for ch.cyberduck.core.aquaticprime.License.java

Source

package ch.cyberduck.core.aquaticprime;

/*
 *  Copyright (c) 2009 David Kocher. All rights reserved.
 *  http://cyberduck.ch/
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  Bug fixes, suggestions and comments should be sent to:
 *  dkocher@cyberduck.ch
 */

import ch.cyberduck.core.Local;
import ch.cyberduck.core.LocalFactory;
import ch.cyberduck.core.Native;
import ch.cyberduck.core.Preferences;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.FalseFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.log4j.Logger;

import java.io.File;
import java.util.Collection;

/**
 * @version  $Id: License.java 5275 2009-09-16 17:37:54Z dkocher $
 */
public class License {
    private static Logger log = Logger.getLogger(License.class);

    private static boolean JNI_LOADED = false;

    private static boolean loadNative() {
        if (!JNI_LOADED) {
            JNI_LOADED = Native.load("Prime");
        }
        return JNI_LOADED;
    }

    /**
     * @return Null if no license found
     */
    public static License find() {
        final Collection<File> licenses = FileUtils.listFiles(new File(LocalFactory
                .createLocal(Preferences.instance().getProperty("application.support.path")).getAbsolute()),
                new SuffixFileFilter(".cyberducklicense"), FalseFileFilter.FALSE);
        for (File license : licenses) {
            return new License(LocalFactory.createLocal(license));
        }
        log.info("No license found");
        return License.EMPTY;
    }

    /**
    * @uml.property  name="eMPTY"
    * @uml.associationEnd  
    */
    private static final License EMPTY = new License() {
        @Override
        public boolean verify() {
            return false;
        }

        @Override
        public String getValue(String property) {
            return null;
        }
    };

    /**
    * @uml.property  name="file"
    * @uml.associationEnd  
    */
    private Local file;

    private License() {
        ;
    }

    /**
     * @param file
     */
    public License(Local file) {
        this.file = file;
    }

    /**
     * @return True if valid license key
     */
    public boolean verify() {
        if (!License.loadNative()) {
            return false;
        }
        final boolean valid = this.verify(file.getAbsolute());
        if (valid) {
            log.info("Valid donation key:" + file.getAbsolute());
        } else {
            log.warn("Not a valid donation key:" + file.getAbsolute());
        }
        return valid;
    }

    private native boolean verify(String license);

    /**
     * @return
     */
    public String getValue(String property) {
        if (!License.loadNative()) {
            return null;
        }
        return this.getValue(file.getAbsolute(), property);
    }

    private native String getValue(String license, String property);
}