initial commit

This commit is contained in:
workinghard
2022-01-05 23:09:35 +01:00
parent 1c785e825c
commit da23cdd254
56 changed files with 1529 additions and 403 deletions

View File

@@ -0,0 +1,257 @@
/*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package guitartex2;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Locale;
import java.util.ResourceBundle;
public class GTXClient extends Thread{
private static String quit = "CMD:123_QUIT_123";
private static String transfer = "CMD:123_TRANSFER_123";
//private static String ok = "CMD:123_OK_123";
private static String failed = "CMD:123_FAILED_123";
private static String ping = "CMD:123_PING_123";
private static String pong = "CMD:123_PONG_123";
private int id;
private StatusBox myStatusBox;
private String fileName;
private String showPdf;
private boolean hostExist = false;
private ResourceBundle resbundle;
protected Socket serverConn;
DataOutputStream dout;
DataInputStream din;
private GTXConsole myConsole;
private String logCache = "";
// Konstruktor
public GTXClient(String host, int port) {
resbundle = ResourceBundle.getBundle ("GuitarTeX2strings", Locale.getDefault());
try {
logToConsole("Trying to connect to " + host + " " + port);
serverConn = new Socket(host, port);
}catch (UnknownHostException e) {
logToConsole("Bad host name given.");
}catch (IOException e) {
logToConsole("GtxClient: " + e);
}
hostExist = true;
logToConsole("Made server connection");
}
public GTXClient(String host, int port, StatusBox sBox, String file, int myId, String sPdf) {
resbundle = ResourceBundle.getBundle ("GuitarTeX2strings", Locale.getDefault());
try {
logToConsole("Trying to connect to " + host + " " + port);
serverConn = new Socket(host, port);
}catch (UnknownHostException e) {
logToConsole("Bad host name given.");
}catch (IOException e) {
logToConsole("GtxClient: " + e);
}
hostExist = true;
showPdf = sPdf;
id = myId;
myStatusBox = sBox;
fileName = file;
logToConsole("Made server connection");
}
private void logToConsole(String text) {
if ( myConsole == null ) {
if ( logCache.equals("") ) {
logCache = text;
}else{
logCache = logCache + "\n" + text;
}
}else{
if ( ! logCache.equals("") ) {
myConsole.addText(logCache);
logCache = "";
myConsole.addText(text);
}else{
myConsole.addText(text);
}
}
}
void setGTXConsole(GTXConsole mConsole) {
myConsole = mConsole;
if ( ! logCache.equals("") ) {
myConsole.addText(logCache);
logCache = "";
}
}
void forceLogCache() {
if ( myConsole != null ) {
myConsole.addText(logCache);
logCache = null;
}
}
@Override
public void run () {
try {
if ( myStatusBox != null ) {
myStatusBox.setStatus(resbundle.getString("sendTexFile"));
}
dout.writeUTF(transfer);
logToConsole("Client ready for transfer:");
FileTransfer fileTransfer = new FileTransfer(id,0,din, dout);
int texSendResult = fileTransfer.sendFile(fileName);
if ( texSendResult != 0) {
logToConsole("tex file send failed");
}else{
myStatusBox.setStatus(resbundle.getString("wait4PdfFile"));
logToConsole("tex file send.");
}
String texResult = din.readUTF();
if ( texResult.equals(failed)) {
new InfoBox(resbundle.getString("texFailed"));
logToConsole("texin unsuccessfull");
//myStatusBox.setStatus("FEHLER!");
//myStatusBox.requestFocus();
}else{
myStatusBox.setStatus(resbundle.getString("receivePdfFile"));
String rawFileName = fileName.substring(0, fileName.length()-4);
int pdfResult = fileTransfer.receiveFile(rawFileName + ".pdf");
if ( pdfResult != 0) {
logToConsole("pdf unsuccesfull");
}else{
logToConsole("pdf file received.");
}
myStatusBox.setStatus(resbundle.getString("receiveLogFile"));
int logResult = fileTransfer.receiveFile(rawFileName + ".log");
if ( logResult != 0) {
logToConsole("log unsuccesfull");
}else{
logToConsole("log file received.");
}
myStatusBox.setStatus("try to show PDF file ...");
logToConsole("try to show pdf file");
try{
Runtime.getRuntime().exec(showPdf);
}catch (Exception h) {
logToConsole("ERR: " + h);
}
}
closeConnection();
myStatusBox.setVisible(false);
}catch (Exception e) {
logToConsole("failed texin file: " + e);
}
}
public int openConnection() {
if ( hostExist) {
try {
dout = new DataOutputStream(serverConn.getOutputStream());
din = new DataInputStream(serverConn.getInputStream());
logToConsole("connection open");
return 0;
}catch (Exception e) {
logToConsole("open connection failed: " + e);
return 1;
}
}else{
logToConsole("Host not exists!");
return 1;
}
}
public int closeConnection() {
if ( hostExist ) {
try {
dout.writeUTF(quit);
din.close();
dout.close();
logToConsole("connection closed");
return 0;
}catch (Exception e) {
logToConsole("close connection failed: " + e);
return 1;
}
}else{
logToConsole("Host not exists!");
return 1;
}
}
public int checkServerConnection() {
if ( hostExist ) {
try {
logToConsole("sending ping ...");
dout.writeUTF(ping);
logToConsole("awaiting pong ...");
String pingResult = din.readUTF();
logToConsole(pingResult);
if ( pingResult.equals(pong)) {
logToConsole("pong received.");
return 0;
}else {
logToConsole("server doesn't working.");
return 1;
}
}catch (Exception e) {
logToConsole("ping failed " + e);
return 1;
}
}else{
logToConsole("Host not exists!");
return 1;
}
}
public String sendText(String text) {
String result = "unknown command!";
if ( text.equals("ping") ){
try {
dout.writeUTF(ping);
result = din.readUTF();
if ( result.equals(pong) ) {
result = "pong";
}
dout.writeUTF(quit);
}catch (Exception e) {
logToConsole("Sending failed!");
return "Sending failed!";
}
}
return result;
}
/* public int tex2pdf(String fileName, int id) {
}*/
}