All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fastchar.core.FastWebs Maven / Gradle / Ivy

Go to download

FastChar is Web+ORM Framework in Java Copyright (C) http://www.fastchar.com All rights reserved.

The newest version!
package com.fastchar.core;

import com.fastchar.annotation.AFastPriority;
import com.fastchar.interfaces.IFastWeb;
import com.fastchar.utils.FastClassUtils;

import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

final class FastWebs {
    private List> webs = new ArrayList<>();

    FastWebs addFastWeb(Class webClass) {
        if (!FastClassUtils.checkNewInstance(webClass)) {
            return this;
        }
        if (webs.contains(webClass)) {
            return this;
        }
        webs.add(webClass);
        return this;
    }


    void sortWeb() {
        Collections.sort(webs, new Comparator>() {
            @Override
            public int compare(Class o1, Class o2) {
                int priority1 = 0, priority2 = 0;

                if (o1.isAnnotationPresent(AFastPriority.class)) {
                    AFastPriority priority = o1.getAnnotation(AFastPriority.class);
                    priority1 = priority.value();
                }

                if (o2.isAnnotationPresent(AFastPriority.class)) {
                    AFastPriority priority = o2.getAnnotation(AFastPriority.class);
                    priority2 = priority.value();
                }

                if (priority1 > priority2) {
                    return -1;
                }
                if (priority1 < priority2) {
                    return 1;
                }
                return 0;
            }
        });
    }

    public void initWeb(FastEngine engine) throws Exception {
        sortWeb();
        for (Class web : webs) {
            IFastWeb iFastWeb = FastClassUtils.newInstance(web);
            if (iFastWeb != null) {
                iFastWeb.onInit(engine);
            }
        }
    }

    public void destroyWeb(FastEngine engine) throws Exception {
        for (Class web : webs) {
            IFastWeb iFastWeb = FastClassUtils.newInstance(web);
            if (iFastWeb != null) {
                iFastWeb.onDestroy(engine);
            }
        }
    }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy