aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundle.java
blob: ab69d63c8090d51f7898b0f2f52db452b777f71c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
 * ============LICENSE_START========================================================================
 * ONAP : ccsdk feature sdnr wt
 * =================================================================================================
 * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
 * =================================================================================================
 * 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.
 * ============LICENSE_END==========================================================================
 */
package org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

/**
 * At startup of each karaf bundle, each UI module creates an instance of this class via blueprint. Initialize method
 * gets called at loading of bundle.
 */

public class OdluxBundle {

    final static Logger LOG = LoggerFactory.getLogger(OdluxBundle.class);
    private static final String LR = "\n";

    private String bundleName;
    private OdluxBundleLoader loader;
    private int index;

    /**
     * @return the index
     */
    public int getIndex() {
        return index;
    }

    /**
     * @param index the index to set
     */
    public void setIndex(int index) {
        this.index = index;
    }

    public OdluxBundleLoader getLoader() {
        return loader;
    }

    public void setLoader(OdluxBundleLoader loader) {
        this.loader = loader;
    }

    public void setBundleName(String bundleName) {
        this.bundleName = bundleName;
    }

    public String getBundleName() {
        return this.bundleName;
    }

    public OdluxBundle() {}

    protected OdluxBundle(final OdluxBundleLoader loader, final String bundleName) {
        this.loader = loader;
        this.bundleName = bundleName;
    }

    public void initialize() {

        LOG.info("Registering resources");
        if (this.loader != null) {
            if (this.bundleName == null)
                LOG.error("bundle name is missing. Bundle can not be registered with odlux");
            else {
                LOG.info("Registering bunlde {}", this.bundleName);
                this.loader.addBundle(this);
            }
        }
    }

    public void clean() {
        LOG.info("Unregistering resources");

        if (this.loader != null) {
            this.loader.removeBundle(this);
        }
    }

    public boolean hasResource(String filename) {
        return this.getResource(filename) != null;
    }

    public String getResourceFileContent(String filename) {
        return this.loadFileContent(this.getResource(filename));
    }

    protected URL getResource(String filename) {
        return ClassLoaderUtilExt.getResource(filename, this.getClass());
    }

    protected String loadFileContent(final URL url) {
        if (url == null)
            return null;
        LOG.debug("try to load res " + url.toString());
        StringBuilder sb = new StringBuilder();
        BufferedReader in = null;
        try {
            in = new BufferedReader(new InputStreamReader(url.openStream()));

            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                sb.append(inputLine + LR);
            }
        } catch (IOException e) {
            LOG.warn("could not load resfile " + url.toString() + ": " + e.getMessage());
            return null;
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {

                }
            }
        }

        return sb.toString();
    }

}