Modify package structure and pom file
[vfc/nfvo/driver/ems.git] / ems / boco / src / main / java / org / onap / vfc / nfvo / emsdriver / commons / utils / DriverThread.java
1 /**
2  * Copyright 2017 BOCO Corporation.  CMCC Technologies Co., Ltd
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.onap.vfc.nfvo.emsdriver.commons.utils;
17
18 import org.apache.commons.logging.Log;
19 import org.apache.commons.logging.LogFactory;
20
21 public abstract class DriverThread implements Runnable{
22         protected Log log = LogFactory.getLog(this.getClass());
23         private String name = null;
24         private Thread t = null;
25         private boolean run = false;
26         private boolean end = false;
27         
28         public synchronized void start() {
29                 t = new Thread(this);
30                 t.start();
31         }
32         public void setName(String name) {
33                 this.name = name;
34                 if (t != null)
35                         t.setName(name);
36         }
37
38         public String getName() {
39                 if (t != null)
40                         return t.getName();
41                 return name;
42         }
43         
44         public abstract void dispose();
45
46         final public void run() {
47                 t = Thread.currentThread();
48                 if (name != null)
49                         t.setName(name);
50
51                 try {
52                         dispose();
53                 } catch (Throwable e) {
54                         e.printStackTrace();
55                 }
56                 this.setEnd(true);
57                 
58         }
59
60         public boolean stop(){
61                 
62                 this.setRun(false);
63                 while(!isEnd()){
64                         try {
65                                 Thread.sleep(1);
66                         } catch (InterruptedException e) {
67                                 log.error("InterruptedException :"+StringUtil.getStackTrace(e));
68                         }
69                 }
70                 return end;
71         }
72         
73         public void interrupt() {
74                 if (t != null)
75                         t.interrupt();
76         }
77
78         public void setRun(boolean run) {
79                 this.run = run;
80         }
81
82         public boolean isRun() {
83                 return run;
84         }
85         public void setEnd(boolean end) {
86                 this.end = end;
87         }
88         public boolean isEnd() {
89                 return end;
90         }
91 }