How to configure "Start/Stop a service" in install4j? - install4j

I have created an application with install4j and after successful installation, I need to restart few services in Linux/Windows machine.
I have written a following script to stop and start the services in java. But I want to handle this operation within install4j.
int restartService = Util.showOptionDialog("\nClick on \"Yes\" to restart the service now and Click on \"No\" to restart the service manually later.",new String[]{"Yes","No"},1);
//0= yes restart
//1= no
if(restartService == 0){
if(Util.isWindows())
{
context.getProgressInterface().setStatusMessage("Checking service is present or not...");
context.getProgressInterface().setPercentCompleted(10);
String serviceName = "vspherewebclientsvc";
try {
boolean isProcessActive = false;
Util.logInfo(null,"Step 1 : Checking service is present or not...");
Process p = Runtime.getRuntime().exec("sc query " + serviceName);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
if (line.trim().startsWith("STATE")) {
while (!("4".equals(line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim()) || "2".equals(line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim()))) {
Util.logInfo(null,"running");
}
Util.logInfo(null,"\t-> Service is Active!");
isProcessActive = true;
}
line = reader.readLine();
}
if (isProcessActive) {
context.getProgressInterface().setStatusMessage("Stopping service...");
context.getProgressInterface().setPercentCompleted(20);
Util.logInfo(null,"Step 2 : Stopping service...");
String[] stop = {"cmd.exe", "/c", "net", "stop", serviceName, "/yes"};
Process p1 = Runtime.getRuntime().exec(stop);
p1.waitFor();
BufferedReader reader1 = new BufferedReader(new InputStreamReader(p1.getInputStream()));
String line1 = reader1.readLine();
while (line1 != null) {
line1 = reader1.readLine();
}
context.getProgressInterface().setStatusMessage("Waiting for Stop service...");
context.getProgressInterface().setPercentCompleted(40);
Thread.sleep(30000);
context.getProgressInterface().setStatusMessage("Validating stop operation...");
context.getProgressInterface().setPercentCompleted(50);
boolean isProcessStopped = false;
Process p2 = Runtime.getRuntime().exec("sc query " + serviceName);
BufferedReader reader2 = new BufferedReader(new InputStreamReader(p2.getInputStream()));
String line2 = reader2.readLine();
while (line2 != null) {
if (line2.trim().startsWith("STATE")) {
while (!("1".equals(line2.trim().substring(line2.trim().indexOf(":") + 1, line2.trim().indexOf(":") + 4).trim()) || "3".equals(line2.trim().substring(line2.trim().indexOf(":") + 1, line2.trim().indexOf(":") + 4).trim()))) {
Util.logInfo(null,"stopping");
}
Util.logInfo(null,"\t-> Finished with Stop operation!");
isProcessStopped = true;
}
line2 = reader2.readLine();
}
context.getProgressInterface().setStatusMessage("Starting service...");
context.getProgressInterface().setPercentCompleted(60);
if (isProcessStopped) {
Util.logInfo(null,"Step 3 : Starting service...");
String[] start = {"cmd.exe", "/c", "sc", "start", serviceName};
Process p3 = Runtime.getRuntime().exec(start);
p3.waitFor();
BufferedReader reader3 = new BufferedReader(new InputStreamReader(p3.getInputStream()));
String line3 = reader3.readLine();
while (line3 != null) {
line3 = reader3.readLine();
}
Util.logInfo(null,"\t-> Finished with Start operation!");
}
} else {
Util.logInfo(null,"Error : Service is not Active...");
}
context.getProgressInterface().setStatusMessage("Validating start operation...");
context.getProgressInterface().setPercentCompleted(80);
Thread.sleep(30000);
Util.logInfo(null,"Step 4 : Validating Restart operation!");
boolean isProcessRestarted = false;
Process p4 = Runtime.getRuntime().exec("sc query " + serviceName);
BufferedReader reader4 = new BufferedReader(new InputStreamReader(p4.getInputStream()));
String line4 = reader4.readLine();
while (line4 != null) {
if (line4.trim().startsWith("STATE")) {
while (!("4".equals(line4.trim().substring(line4.trim().indexOf(":") + 1, line4.trim().indexOf(":") + 4).trim()) || "2".equals(line4.trim().substring(line4.trim().indexOf(":") + 1, line4.trim().indexOf(":") + 4).trim()))) {
Util.logInfo(null,"restarting");
}
isProcessRestarted = true;
}
line4 = reader4.readLine();
}
if (isProcessRestarted) {
Util.logInfo(null,"\t-> Restart operation is successfull!");
context.getProgressInterface().setStatusMessage("Restart operation is successfull!");
context.getProgressInterface().setPercentCompleted(90);
} else {
Util.logInfo(null,"\t-> Restart operation is not successfull!");
context.getProgressInterface().setStatusMessage("Restart operation is not successfull!");
context.getProgressInterface().setPercentCompleted(90);
}
context.getProgressInterface().setStatusMessage("Completed!");
context.getProgressInterface().setPercentCompleted(100);
return true;
} catch (InterruptedException ex) {
return false;
}
}
else if (Util.isLinux())
{
try {
String[] command = {"/bin/bash","-c","/etc/init.d/vsphere-client restart"};
Process p = Runtime.getRuntime().exec(command);
p.waitFor();
Util.logInfo(null,"Done");
return true;
} catch (IOException ex) {
return false;
}
}else{
return false;
}
}else{
context.goBack(0);
return false;
}
How can we achieve this with "Start/Stop a service" in install4j?

There are "Stop a service" and "Start a service" actions in install4j that you can use for this purpose.

Related

In socket programming exe file memory increasing gradually and also socket remain open

When received sting from multiple client at time some socket remain open so created mis file size increasing gradually so at time exe file become 2 GB from 35 kb so how can i reduce open sockect
private void Server_Load(object sender, EventArgs e)
{
try
{
this.tcpListener = new TcpListener(IPAddress.Any, port);
this.listenThread = new Thread(new ThreadStart(ListenForClients));
this.listenThread.Start();
}
catch (Exception ex)
{ }
finally
{
if (this.tcpListener != null)
{
this.tcpListener.Stop();
}
}
}
Mangae Client request by server continuously from load method
private void ListenForClients()
{
TcpClient client = null;
try
{
this.tcpListener.Start();
while (true)
{
client = this.tcpListener.AcceptTcpClient();
ThreadPool.QueueUserWorkItem(new WaitCallback(HandleClientComm),
client);
}
}
catch (Exception ex)
{
LogHelperISPL.Logger.Info("ListenForClients: " + ex.Message);
this.tcpListener.Stop();
}
finally
{
if(this.tcpListener != null)
{
this.tcpListener.Stop();
}
if (client != null)
{
client.Close();
}
}
}
Take data from client and insert into table and mange pass tcpclient and networkstream with close connection
private void HandleClientComm(object client)
{
TcpClient tcpClient = null;
NetworkStream clientStream = null;
try
{
tcpClient = (TcpClient)client;
clientStream = tcpClient.GetStream();
string InsertedRecord = string.Empty;
byte[] messageBytes = new byte[4096];
int bytesRead;
bool end = false;
while (!end)
{
bytesRead = 0;
try
{
if (clientStream != null)
{
bytesRead = clientStream.Read(messageBytes, 0,
messageBytes.Length);
}
}
catch (SocketException ex)
{
if (clientStream != null)
{
clientStream.Flush();
clientStream.Close();
}
if (tcpClient != null)
{
tcpClient.Close();
}
break;
}
catch (Exception ex)
{
if (clientStream != null)
{
clientStream.Flush();
clientStream.Close();
}
if (tcpClient != null)
{
tcpClient.Close();
}
break;
}
if (bytesRead <= 0)
{
break;
}
ASCIIEncoding encoder = new ASCIIEncoding();
string Datareceived = encoder.GetString(messageBytes, 0, bytesRead);
if (!string.IsNullOrEmpty(Datareceived))
{
string[] Multistrings = Datareceived.Split('!');
for (int i = 0; i < Multistrings.Length; i++)
{
if (!string.IsNullOrEmpty(Multistrings[i]))
{
if (Multistrings[i].Length >= 90)
{
InsertedRecord = InsertRawData(Multistrings[i]);
}
else
{
InsertedRecord =
InsertRawDataGarbage(Multistrings[i]);
}
}
}
}
}
}
catch (Exception ex)
{
LogHelperISPL.Logger.Info("While loop: " + ex.Message);
}
finally
{
if (clientStream != null)
{
clientStream.Flush();
clientStream.Close();
}
if (tcpClient != null)
{
tcpClient.Close();
}
}
}

tshark command line to convert a wireskark pcap file to a text file

I am trying to use tshark command line to convert a wireskark pcap file to a text file. everything looks right. But I get no output and no errors
public void convertPcapToTxt( ) {
try {
// setting output and input file names
String resultfile = "C:\\MY.txt";
String pcapfile = "C:\\MY.pcap";
Runtime rt = Runtime.getRuntime();
// create output
PrintStream out = new PrintStream(resultfile);
// set command line
Process proc = rt.exec("tshark.exe -V -r " + pcapfile);
//output to file
BufferedReader stdInput = new BufferedReader
(new InputStreamReader(proc.getInputStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
out.println(s);
}
//close output
out.close();
} catch (IOException io) {
io.printStackTrace();
}
}
public void convertPcapToTxt(File file, String pcapfile) {
try {
PrintStream out = new PrintStream(new FileOutputStream(file));
Runtime rt = Runtime.getRuntime();
String commands = "tshark.exe -V -r \"" + pcapfile + "\"";
Process proc = rt.exec(commands);
BufferedReader stdInput = new BufferedReader
(new InputStreamReader(proc.getInputStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
out.println(s);
}
out.close();
} catch (IOException io) {
io.printStackTrace();
}
}

How to implement boolean retrieval using hitcollector in below scenario

I am running my code on TREC documents and right now implementing scoring scheme to get number of relevant documents. However now i want to implement boolean retrieval, I am trying to use HitCollector.
below is my code..
public class BatchSearch {
private BatchSearch() {}
/** Simple command-line based search demo. */
public static void main(String[] args) throws Exception {
String usage =
"Usage:\tjava BatchSearch [-index dir] [-simfn similarity] [-field f] [-queries file]";
if (args.length > 0 && ("-h".equals(args[0]) || "-help".equals(args[0]))) {
System.out.println(usage);
System.out.println("Supported similarity functions:\ndefault: DefaultSimilary (tfidf)\n");
System.exit(0);
}
String index = "index";
String field = "contents";
String queries = null;
String simstring = "default";
for(int i = 0;i < args.length;i++) {
if ("-index".equals(args[i])) {
index = args[i+1];
i++;
} else if ("-field".equals(args[i])) {
field = args[i+1];
i++;
} else if ("-queries".equals(args[i])) {
queries = args[i+1];
i++;
} else if ("-simfn".equals(args[i])) {
simstring = args[i+1];
i++;
}
}
Similarity simfn = null;
if ("default".equals(simstring)) {
simfn = new DefaultSimilarity();
} else if ("bm25".equals(simstring)) {
simfn = new BM25Similarity();
} else if ("dfr".equals(simstring)) {
simfn = new DFRSimilarity(new BasicModelP(), new AfterEffectL(), new NormalizationH2());
} else if ("lm".equals(simstring)) {
simfn = new LMDirichletSimilarity();
}
if (simfn == null) {
System.out.println(usage);
System.out.println("Supported similarity functions:\ndefault: DefaultSimilary (tfidf)");
System.out.println("bm25: BM25Similarity (standard parameters)");
System.out.println("dfr: Divergence from Randomness model (PL2 variant)");
System.out.println("lm: Language model, Dirichlet smoothing");
System.exit(0);
}
IndexReader reader = DirectoryReader.open(FSDirectory.open(new File(index)));
IndexSearcher searcher = new IndexSearcher(reader);
searcher.setSimilarity(simfn);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_41);
BufferedReader in = null;
if (queries != null) {
in = new BufferedReader(new InputStreamReader(new FileInputStream(queries), "UTF-8"));
} else {
in = new BufferedReader(new InputStreamReader(new FileInputStream("queries"), "UTF-8"));
}
QueryParser parser = new QueryParser(Version.LUCENE_41, field, analyzer);
while (true) {
String line = in.readLine();
if (line == null || line.length() == -1) {
break;
}
line = line.trim();
if (line.length() == 0) {
break;
}
String[] pair = line.split(" ", 2);
Query query = parser.parse(pair[1]);
doBatchSearch(in, searcher, pair[0], query, simstring);
}
reader.close();
}
/**
* This function performs a top-1000 search for the query as a basic TREC run.
*/
public static void doBatchSearch(BufferedReader in, IndexSearcher searcher, String qid, Query query, String runtag)
throws IOException {
// Collect enough docs to show 5 pages
TopDocs results = searcher.search(query, 1000);
ScoreDoc[] hits = results.scoreDocs;
HashMap<String, String> seen = new HashMap<String, String>(1000);
int numTotalHits = results.totalHits;
int start = 0;
int end = Math.min(numTotalHits, 1000);
for (int i = start; i < end; i++) {
Document doc = searcher.doc(hits[i].doc);
String docno = doc.get("docno");
// There are duplicate document numbers in the FR collection, so only output a given
// docno once.
if (seen.containsKey(docno)) {
continue;
}
seen.put(docno, docno);
System.out.println(qid+" Q0 "+docno+" "+i+" "+hits[i].score+" "+runtag);
}
}
}
The scoring is done in doBatchSearch and now i want to implement HitCollector here.

filtering datagrid using combobox

I had created a datagridview like this
public void gridviewsetup()
{
tbl_Aplication.Columns.Add("1", "Empid");
tbl_Aplication.Columns.Add("2", "Emp no");
tbl_Aplication.Columns.Add("3", "Emp Name");
tbl_Aplication.Columns.Add("4", "Department ");
tbl_Aplication.Columns.Add("5", "Designation");
tbl_Aplication.Columns.Add("6", "Shift");
tbl_Aplication.Columns.Add("7", "Start Time");
tbl_Aplication.Columns.Add("8", "End Time");
tbl_Aplication.Columns.Add("9", "OT");
tbl_Aplication.Columns.Add("10", "Reversed Swipe Out");
tbl_Aplication.RowTemplate.Height = 18;
}
and i had populated a data table to fill the data dgridview
public void filldatagrid()
{
if (cmb_dept.Text.Trim() != "")
{
Datatable employedata = empreg.getallemployeeshiftdetails(int.Parse(cmb_dept.SelectedValue.ToString()), Program.LOCTNPK);
tbl_Aplication.Rows.Clear();
tbl_Aplication.DataSource = null;
for (int i = 0; i < employedata.Rows.Count; i++)
{
tbl_Aplication.Rows.Add();
tbl_Aplication.Rows[i].Cells[1].Value = employedata.Rows[i][0];
tbl_Aplication.Rows[i].Cells[2].Value = employedata.Rows[i][1];
tbl_Aplication.Rows[i].Cells[3].Value = employedata.Rows[i][2];
tbl_Aplication.Rows[i].Cells[4].Value = employedata.Rows[i][3];
tbl_Aplication.Rows[i].Cells[5].Value = employedata.Rows[i][4];
tbl_Aplication.Rows[i].Cells[6].Value = employedata.Rows[i][5];
tbl_Aplication.Rows[i].Cells[7].Value = employedata.Rows[i][6];
tbl_Aplication.Rows[i].Cells[8].Value = employedata.Rows[i][7];
tbl_Aplication.Rows[i].Cells[9].Value = 0;
tbl_Aplication.Rows[i].Cells[10].Value = employedata.Rows[i][7];
}
}
}
now i want to filter data in the datagrid with the designation selected in the combobox without going back to database ,I did it like this but it shows error
private void cmb_designation_SelectedIndexChanged(object sender, EventArgs e)
{
if (desgflag != 0)
{
if (cmb_dept.SelectedValue!=null )
{
// tbl_Aplication.DataSource = employedata;
((DataTable)tbl_Aplication.DataSource).DefaultView.RowFilter = " designationnName like '%" + cmb_dept.Text.Trim() + "%' ";
}
}
}
I had done it
private void cmb_department_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (cmb_department.Text.Trim() == "" || cmb_department.Text.Trim() == null)
{
tbl_DestinationData.DataSource = dt;
}
else
{
((DataTable)tbl_DestinationData.DataSource).DefaultView.RowFilter = " Dept like '%" + cmb_department.Text.Trim() + "%' ";
}
}
catch (Exception )
{
throw;
}
}

Android reading text fie from sdcsrd and store it in ArrayList

I need help on this one, I am trying to read a text file stored in sdcard and store the result in an ArrayList for subsequent usage, but the code is crashing.
public class Mytextreader extends Activity {
final ArrayList> dataList = new ArrayList>();
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
loadData();
String text = "";
for (int i = 0; i < dataList.size(); i++) {
text = text + dataList.get(i).get("name") + ":"
+ dataList.get(i).get("image") + ":"
+ dataList.get(i).get("price") + ":"
+ dataList.get(i).get("barcode") + "\n";
}
TextView txv = (TextView) findViewById(R.id.textView01);
txv.setText(text);
}
private void loadData() {
File sdcardDir = Environment.getExternalStorageDirectory();
String sdcard = sdcardDir.getAbsolutePath();
File file = new File(sdcard + "/Downloads/data/data.txt");
// For each entry the following lines are repeated
HashMap<String, String> hmap = new HashMap<String, String>();
String text = "", line = "";
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
while ((line = br.readLine()) != null) {
text = text + line + "\n";
}
br.close();
} catch (IOException e) {
Log.d("File Read test: Error= ", e.getMessage());
}
while (true) {
line = text.substring(0, text.indexOf('\n'));
text = text.substring(text.indexOf('\n') + 1);
hmap.put("name", line.substring(0, line.indexOf(';')));
line = line.substring(line.indexOf(';') + 1);
// Toast.makeText(this, line, Toast.LENGTH_LONG).show();
hmap.put("image", line.substring(0, line.indexOf(';')));
line = line.substring(line.indexOf(';') + 1);
// Toast.makeText(this, line, Toast.LENGTH_LONG).show();
hmap.put("price", line.substring(0, line.indexOf(';')));
line = line.substring(line.indexOf(';') + 1);
// Toast.makeText(this, line, Toast.LENGTH_LONG).show();
hmap.put("barcode", line);
dataList.add(hmap);
hmap.clear();
if (text.length() == 0)
break;
}
}
}
Ok fixed, the text file has an empty line, removed that line and the code is ok now