Commit 8f33aa32 authored by LG's avatar LG

Verzeichnisüberwachung: SFTP-Verbindung...

git-svn-id: https://inovat-svn-server:8443/svn/NI-DAUZ-1/trunk@804 8a9b1199-d942-744a-a8b1-ac58f4d8385e
parent 9b254e02
......@@ -50,6 +50,9 @@ import java.util.List;
* @version $Revision: 282 $ / $Date: 2012-08-30 13:42:53 +0200 (Do, 30 Aug 2012) $ / ($Author: LG $)
*/
public class SFTPFunktionen {
private static final String SFTP = "sftp";
//~ METHODEN ==============================================================
/**
* Ermittle alle Dateiennamen im angegebenen SFTP-Ordner.
......@@ -68,7 +71,7 @@ public class SFTPFunktionen {
// ---------------------------------------------------------
// ffne den Kanal:
Channel channel = session.openChannel("sftp");
Channel channel = session.openChannel(SFTP);
channel.connect();
sftpChannel = (ChannelSftp) channel;
......@@ -141,7 +144,7 @@ public class SFTPFunktionen {
// ---------------------------------------------------------
// ffne den Kanal:
Channel channel = session.openChannel("sftp");
Channel channel = session.openChannel(SFTP);
channel.connect();
sftpChannel = (ChannelSftp) channel;
......@@ -223,7 +226,7 @@ public class SFTPFunktionen {
// ---------------------------------------------------------
// ffne den Kanal:
Channel channel = session.openChannel("sftp");
Channel channel = session.openChannel(SFTP);
channel.connect();
sftpChannel = (ChannelSftp) channel;
......@@ -338,6 +341,55 @@ public class SFTPFunktionen {
return session;
}
/**
* Verschiebe bzw. umbenenne SFTP-Datei.
*
* @param session Session.
* @param dateiSftpAlt Die alte SFTP-Datei (mit Path).
* @param dateiSftpNeu Die neue SFTP-Datei (mit Path).
*
* @return Exception, falls beim Verschieben _Fehler aufgetreten sind,
* null - sonst.
*/
public static Exception verschiebeSFTPDatei(Session session, String dateiSftpAlt, String dateiSftpNeu) {
ChannelSftp sftpChannel = null;
try {
// ---------------------------------------------------------
// ffne den Kanal:
Channel channel = session.openChannel(SFTP);
channel.connect();
sftpChannel = (ChannelSftp) channel;
// ---------------------------------------------------------
// Verschiebe bzw. umbenenne die SFTP-Datei:
try {
sftpChannel.rename(dateiSftpAlt, dateiSftpNeu);
schliesseSftpKanal(sftpChannel);
return null;
}
catch (Exception e) {
Exception e2 = new Exception(String.format("SFTP-Datei <%s> konnte nicht in <%s> verschiebt/umbenannt werden (%s)", dateiSftpAlt, dateiSftpNeu, e.getLocalizedMessage()), e);
e2.setStackTrace(e.getStackTrace());
schliesseSftpKanal(sftpChannel);
return e2;
}
}
catch (Exception e) {
// ---------------------------------------------------------
// Versuche den Kanal zu schlieen:
schliesseSftpKanal(sftpChannel);
return e;
}
}
}
......
......@@ -42,6 +42,9 @@ import java.util.List;
*/
public class SFTPKommunikation {
/** TODO Fileseparator auf dem Server. */
private final static String FILESEPARATOR_SERVER = "/";
/** DebugLogger fr Debug-Ausgaben. */
private static final Debug debug = Debug.getLogger();
......@@ -107,21 +110,32 @@ public class SFTPKommunikation {
//~ METHODEN ==============================================================
/**
* Ermittle SFTP-Datei-Pfad.
*
* @param sftpDateiName SFTP-Dateiname.
* @param sftpOrdner SFTP-Pfad, wo die Datei liegt.
*
* @return SFTP-Datei-Pfad.
*/
private String ermittleSftpDateiPfad(String sftpDateiName, String sftpOrdner) {
if (sftpOrdner.isEmpty()) {
return sftpDateiName;
} else {
if (sftpOrdner.endsWith(FILESEPARATOR_SERVER)) {
return String.format("%s%s", sftpOrdner, sftpDateiName);
} else {
return String.format("%s%s%s", sftpOrdner, FILESEPARATOR_SERVER, sftpDateiName);
}
}
}
/**
* Die Methode zur berwachung des Verzeichnisses.
*/
public void ueberwacheVerzeichnis() {
// TODO
// Ermittle alle Dateien im berwachungs-Verzeichnis:
//
// Falls Bearbeitungs-Datei:
// Verschiebe die Bearbeitungs-Datei in _verschiebeVerzeichnis:
//
// Falls nicht Bearbeitungs-Datei und nicht Lock-Datei:
// DaV-Eintrag:
//
//
// -----------------------------------------
// Erstelle die SFTP-Verbindung:
// -----------------------------------------
......@@ -150,14 +164,32 @@ public class SFTPKommunikation {
// -----------------------------------------
// Bearbeite alle SFTP-Dateien:
// -----------------------------------------
if (alleDateien.size() > 0) {
for (String dateiSftp : alleDateien) {
// -----------------------------------------
// Falls Bearbeitungs-Datei --->
// verschiebe die in SFTP-Verzeichnis _verschiebeVerzeichnis:
// -----------------------------------------
if (dateiSftp.endsWith(Verzeichnisueberwachung.BEARBEITUNGS_DATEI)) {
String alt = ermittleSftpDateiPfad(dateiSftp, _ueberwachungsVerezichnis);
String neu = ermittleSftpDateiPfad(dateiSftp, _verschiebeVerzeichnis);
Exception e = SFTPFunktionen.verschiebeSFTPDatei(session, alt, neu);
if (e != null) {
debug.warning(String.format("Datei <%s> kann nicht in %s verschiebt bzw. umbenannt werden:\n%s", alt, neu, e.getLocalizedMessage()), e.getStackTrace());
}
}
// -----------------------------------------
// Falls nicht Bearbeitungs-Datei und nicht Lock-Datei --->
// TODO
// DaV-Eintrag:
// -----------------------------------------
else if (!dateiSftp.endsWith(Verzeichnisueberwachung.LOCK_DATEI)) {
//
}
// -----------------------------------------
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment