Skip to content
Snippets Groups Projects
Commit 1d2eb83c authored by Oliver Rieger's avatar Oliver Rieger
Browse files

split operation implemented.

parent 76c037d2
Branches
Tags
No related merge requests found
......@@ -15,9 +15,11 @@ log4j.appender.MeinDaRoFiAppender.file=Log.log
log4j.appender.MeinDaRoFiAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.MeinDaRoFiAppender.layout.ConversionPattern=%-5p %d %l: %n%m%n
log4j.logger.de.fu_berlin.inf.dpp=DEBUG
log4j.logger.de.fu_berlin.inf.dpp.jupiter=DEBUG
log4j.logger.de.fu_berlin.inf.dpp=INFO
log4j.logger.de.fu_berlin.inf.dpp.concurrent.jupiter=DEBUG
log4j.logger.de.fu_berlin.inf.dpp.net.internal=DEBUG
log4j.logger.de.fu_berlin.inf.dpp.net.internal.ActivitySequencer=DEBUG
log4j.logger.de.fu_berlin.inf.dpp.test=ERROR
log4j.logger.de.fu_berlin.inf.dpp.test.jupiter.text=DEBUG
log4j.logger.de.fu_berlin.inf.dpp.test.jupiter.text.network=INFO
......
......@@ -39,6 +39,7 @@ import de.fu_berlin.inf.dpp.net.JID;
import de.fu_berlin.inf.dpp.net.TimedActivity;
import de.fu_berlin.inf.dpp.net.internal.ActivitySequencer;
import de.fu_berlin.inf.dpp.project.IActivityProvider;
import de.fu_berlin.inf.dpp.project.internal.SharedProject;
public class ActivitySequencerTest extends TestCase {
private ActivitySequencer sequencer;
......@@ -51,7 +52,7 @@ public class ActivitySequencerTest extends TestCase {
@Override
protected void setUp() throws Exception {
sequencer = new ActivitySequencer();
sequencer.initConcurrentManager(ConcurrentManager.Side.CLIENT_SIDE, new User(new JID("host@jabber.com")), new JID("user@jabber.com"));
sequencer.initConcurrentManager(ConcurrentManager.Side.CLIENT_SIDE, new User(new JID("host@jabber.com")), new JID("user@jabber.com"),new SharedProject(null, null, null));
providerMock = createMock(IActivityProvider.class);
sequencer.addProvider(providerMock);
......
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="de.fu_berlin.inf.dpp_1.0.x.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="lib" path="lib/log4j-1.2.15.jar"/>
......
......@@ -9,7 +9,9 @@ bin.includes = META-INF/,\
bin/,\
lib/log4j-1.2.15.jar,\
lib/smackx-jingle.jar,\
lib/smackx.jar
lib/smackx.jar,\
de.fu_berlin.inf.dpp_1.0.x.jar,\
log4j.properties
src.includes = icons/,\
src/,\
plugin.xml,\
......@@ -17,6 +19,7 @@ src.includes = icons/,\
lib/smack.jar,\
lib/smackx-debug.jar,\
lib/smackx.jar,\
LICENSE
LICENSE,\
log4j.properties
jars.compile.order = .,\
lib/log4j-1.2.15.jar
......@@ -7,17 +7,24 @@ log4j.appender.MeinConsoleAppender.layout.ConversionPattern=%-5p %d{yyyy-MM-dd :
#log4j.appender.MeinConsoleAppender.layout.ConversionPattern=%-5p %d %l:%n%m%n
#log4j.appender.MeinConsoleAppender.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
log4j.appender.MeinDaRoFiAppender=org.apache.log4j.FileAppender
#log4j.appender.MeinDaRoFiAppender=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.MeinDaRoFiAppender=org.apache.log4j.FileAppender
log4j.appender.MeinDaRoFiAppender=org.apache.log4j.RollingFileAppender
#log4j.appender.MeinDaRoFiAppender.datePattern='.'yyyy-MM-dd_HH-mm
log4j.appender.MeinDaRoFiAppender.file=Saros-Log-Teilnehmer-1.log
log4j.appender.MeinDaRoFiAppender.file=Saros.log
log4j.appender.MeinDaRoFiAppender.Append=false
log4j.appender.MeinDaRoFiAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.MeinDaRoFiAppender.layout.ConversionPattern=%-5p %d{yyyy-MM-dd : HH:mm:ss} (%F:%L) : %m%n
#log4j.appender.MeinDaRoFiAppender.layout.ConversionPattern=%-5p %d %l: %n%m%n
log4j.logger.de.fu_berlin.inf.dpp=ERROR
log4j.logger.de.fu_berlin.inf.dpp.invitation.internal=INFO
log4j.logger.de.fu_berlin.inf.dpp.net=INFO
log4j.logger.de.fu_berlin.inf.dpp.util=INFO
log4j.logger.de.fu_berlin.inf.dpp.net.internal=INFO
log4j.logger.de.fu_berlin.inf.dpp.net.jingle=DEBUG
log4j.logger.de.fu_berlin.inf.dpp.concurrent=INFO
log4j.logger.de.fu_berlin.inf.dpp.project.internal=ERROR
log4j.logger.de.fu_berlin.inf.dpp.invitation.internal=ERROR
log4j.logger.de.fu_berlin.inf.dpp.net=ERROR
log4j.logger.de.fu_berlin.inf.dpp.util=ERROR
log4j.logger.de.fu_berlin.inf.dpp.net.internal=ERROR
log4j.logger.de.fu_berlin.inf.dpp.net.internal.XMPPChatTransmitter=DEBUG
log4j.logger.de.fu_berlin.inf.dpp.net.internal.MultiUserChatManager=ERROR
log4j.logger.de.fu_berlin.inf.dpp.net.internal.PrivateChatManager=ERROR
log4j.logger.de.fu_berlin.inf.dpp.net.internal.ActivitySequencer=DEBUG
log4j.logger.de.fu_berlin.inf.dpp.net.jingle=ERROR
......@@ -10,5 +10,5 @@ import de.fu_berlin.inf.dpp.concurrent.jupiter.Request;
*/
public interface IRequestManager {
public IActivity receiveRequest(Request request);
public void receiveRequest(Request request);
}
......@@ -158,7 +158,7 @@ public class ConcurrentDocumentManager implements ConcurrentManager {
return false;
}
private TextEditActivity execTextEditActivity(Request request) {
private void execTextEditActivity(Request request) {
// if (!isHostSide()) {
/**
......@@ -183,18 +183,19 @@ public class ConcurrentDocumentManager implements ConcurrentManager {
op = jupClient.receiveRequest(request);
} catch (TransformationException e) {
logger.error("Error during transformation: ", e);
return null;
return;
}
TextEditActivity textEdit = getTextEditActivity(op);
for(TextEditActivity textEdit : getTextEditActivity(op)){
textEdit.setEditor(request.getEditorPath());
textEdit.setSource(request.getJID().toString());
/* execute activity in activity sequencer. */
sequencer.execTransformedActivity(textEdit);
return textEdit;
}
// return textEdit;
}
// }
return null;
// return null;
}
public IActivity exec(IActivity activity) {
......@@ -256,22 +257,26 @@ public class ConcurrentDocumentManager implements ConcurrentManager {
* @param op
* @return
*/
public TextEditActivity getTextEditActivity(Operation op) {
public List<TextEditActivity> getTextEditActivity(Operation op) {
List<TextEditActivity> result = new Vector<TextEditActivity>();
TextEditActivity textEdit = null;
if (op instanceof DeleteOperation) {
DeleteOperation del = (DeleteOperation) op;
textEdit = new TextEditActivity(del.getPosition(), "", Integer.parseInt(del.getText()));
result.add(textEdit);
}
if (op instanceof InsertOperation) {
InsertOperation ins = (InsertOperation) op;
textEdit = new TextEditActivity(ins.getPosition(), ins.getText(), 0);
result.add(textEdit);
}
if (op instanceof SplitOperation) {
// TODO: implements later:
logger.warn("Split Operation have to be implements.");
SplitOperation split = (SplitOperation) op;
result.add(getTextEditActivity(split.getFirst()).get(0));
result.add(getTextEditActivity(split.getSecond()).get(0));
}
return textEdit;
return result;
}
// private void editorActivitiy(IActivity activity, boolean local) {
......@@ -369,14 +374,16 @@ public class ConcurrentDocumentManager implements ConcurrentManager {
* client.
*
*/
public IActivity receiveRequest(Request request) {
public void receiveRequest(Request request) {
/* 1. Sync with jupiter server component. */
if (isHostSide()) {
/* if host side and server jupiter side of request */
if (isHost(request.getJID()) && request.getSiteId() == 0) {
/* request already has transformed and have to be execute. */
return execTextEditActivity(request);
// return execTextEditActivity(request);
execTextEditActivity(request);
return;
}
JupiterDocumentServer docServer = null;
......@@ -409,14 +416,14 @@ public class ConcurrentDocumentManager implements ConcurrentManager {
/* sync request with jupiter document server. */
docServer.addRequest(request);
return null;
return;
} else {
/*
* 2. receive request in local client component and return the
* transformed operation as IActivity.
*/
return execTextEditActivity(request);
execTextEditActivity(request);
// return execTextEditActivity(request);
}
}
......
......@@ -3,6 +3,7 @@ package de.fu_berlin.inf.dpp.net;
import java.util.List;
import de.fu_berlin.inf.dpp.activities.IActivity;
import de.fu_berlin.inf.dpp.concurrent.IRequestManager;
import de.fu_berlin.inf.dpp.concurrent.jupiter.Request;
import de.fu_berlin.inf.dpp.project.IActivityListener;
......@@ -13,7 +14,7 @@ import de.fu_berlin.inf.dpp.project.IActivityListener;
* @author rdjemili
*
*/
public interface IActivitySequencer extends IActivityListener {
public interface IActivitySequencer extends IActivityListener,IRequestManager {
/**
* Gets all activities since last flush.
*
......@@ -52,5 +53,5 @@ public interface IActivitySequencer extends IActivityListener {
public int getQueuedActivities();
public IActivity receiveRequest(Request request);
// public IActivity receiveRequest(Request request);
}
......@@ -52,7 +52,7 @@ import de.fu_berlin.inf.dpp.project.ISharedProject;
*
* @author rdjemili
*/
public class ActivitySequencer implements IRequestManager, RequestForwarder,
public class ActivitySequencer implements RequestForwarder,
IActivitySequencer, IActivityManager {
// TODO separate into two classes!?
......@@ -449,14 +449,14 @@ public class ActivitySequencer implements IRequestManager, RequestForwarder,
/**
* Receive request from ITransmitter and transfer to concurrent control.
*/
public IActivity receiveRequest(Request request) {
public void receiveRequest(Request request) {
/*
* sync with jupiter server on host side and transform operation with
* jupiter client side.
*/
log.debug("Receive request : "+request+ " from "+request.getJID());
concurrentManager.receiveRequest(request);
return null;
// return null;
// IActivity activity = concurrentManager.receiveRequest(request);
// if (activity != null) {
// /* execute transformed activity */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment