Skip to content

Commit

Permalink
#28: Fix code smells before release
Browse files Browse the repository at this point in the history
  • Loading branch information
manusa committed Sep 3, 2019
1 parent 3daa8fc commit 0e4660e
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 38 deletions.
3 changes: 2 additions & 1 deletion src/main/java/com/marcnuri/mnimapsync/MNIMAPSync.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
*
* @author Marc Nuri <[email protected]>
*/
@SuppressWarnings("WeakerAccess")
public class MNIMAPSync {

static final int THREADS = 5;
Expand Down Expand Up @@ -120,7 +121,7 @@ public void sync() {
indexTargetStore();
copySourceToTarget();
//Delete only if source store was completely indexed (this happens if no exceptions where raised)
if (syncOptions.getDelete() && sourceIndex != null && !sourceCopier.hasCopyException()) {
if (syncOptions.getDelete() && !sourceCopier.hasCopyException()) {
deleteFromTarget();
}
} catch (MessagingException | GeneralSecurityException ex) {
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/marcnuri/mnimapsync/index/Index.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
*/
public class Index {

private AtomicReference<String> folderSeparator;
private AtomicReference<String> inbox;
private final AtomicReference<String> folderSeparator;
private final AtomicReference<String> inbox;
private final Set<String> folders;
private final Map<String, Set<MessageId>> folderMessages;
private final AtomicLong indexedMessageCount;
Expand Down
11 changes: 1 addition & 10 deletions src/main/java/com/marcnuri/mnimapsync/index/MessageId.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,6 @@ public class MessageId implements Serializable {
* will duplicate.
*
* It's a pity because fetching all of the HEADERS is a performance HOG
*
* @param message
* @throws MessageId.MessageIdException
*/
public MessageId(Message message) throws MessageIdException {
try {
Expand Down Expand Up @@ -111,9 +108,6 @@ public int hashCode() {

/**
* Really important. Different servers return different address values when they are invalid.
*
* @param addresses
* @return
*/
private static String[] parseAddress(String[] addresses) {
if (addresses != null) {
Expand All @@ -125,17 +119,14 @@ private static String[] parseAddress(String[] addresses) {
}
}
Collections.sort(ret);
return ret.toArray(new String[ret.size()]);
return ret.toArray(new String[0]);
}
return new String[0];
}


/**
* Adds required headers to fetch profile
*
* @param fetchProfile
* @return
*/
public static FetchProfile addHeaders(FetchProfile fetchProfile) {
fetchProfile.add(FetchProfile.Item.ENVELOPE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public void run() {
final List<Message> toCopy = new ArrayList<>();
for (Message message : sourceMessages) {
try {
final MessageId id = new MessageId((IMAPMessage) message);
final MessageId id = new MessageId(message);
//Index message for deletion (if necessary)
if (storeCopier.getSourceIndex() != null) {
storeCopier.getSourceIndex().getFolderMessages(sourceFolderName).add(id);
Expand All @@ -93,13 +93,13 @@ public void run() {
fullProfile.add(FetchProfile.Item.FLAGS);
fullProfile.add(IMAPFolder.FetchProfileItem.HEADERS);
fullProfile.add(FetchProfile.Item.SIZE);
sourceFolder.fetch(toCopy.toArray(new Message[toCopy.size()]), fullProfile);
sourceFolder.fetch(toCopy.toArray(new Message[0]), fullProfile);
final Folder targetFolder = storeCopier.getTargetStore().getFolder(targetFolderName);
targetFolder.open(Folder.READ_WRITE);
for (Message message : toCopy) {
targetFolder.appendMessages(new Message[]{message});
try {
targetFolderMessages.add(new MessageId((IMAPMessage) message));
targetFolderMessages.add(new MessageId(message));
copied++;
if (copied % updateCount == 0) {
storeCopier.updatedMessagesCopiedCount(copied);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import com.marcnuri.mnimapsync.index.Index;
import com.marcnuri.mnimapsync.index.MessageId;
import com.sun.mail.imap.IMAPMessage;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
Expand Down Expand Up @@ -53,7 +52,8 @@ public MessageDeleter(StoreDeleter storeDeleter,
}

public void run() {
long deleted = 0L, skipped = 0L;
long deleted = 0L;
long skipped = 0L;
try {
final Folder targetFolder = storeDeleter.getTargetStore().getFolder(targetFolderName);
//Opens a new connection per Thread
Expand All @@ -62,7 +62,7 @@ public void run() {
targetFolder.fetch(targetMessages, MessageId.addHeaders(new FetchProfile()));
for (Message message : targetMessages) {
try {
final MessageId id = new MessageId((IMAPMessage) message);
final MessageId id = new MessageId(message);
if (!sourceFolderMessages.contains(id)) {
message.setFlag(Flags.Flag.DELETED, true);
deleted++;
Expand Down
18 changes: 6 additions & 12 deletions src/main/java/com/marcnuri/mnimapsync/store/StoreCopier.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,6 @@ public final void copy() throws InterruptedException {
*
* It also indexes the source store folders if we want to delete target folders that no longer
* exist
*
* @param folder
* @throws MessagingException
*/
private void copySourceFolder(Folder folder) throws MessagingException {
final String sourceFolderName = folder.getFullName();
Expand All @@ -106,9 +103,9 @@ private void copySourceFolder(Folder folder) throws MessagingException {
throw new MessagingException(String.format(
"Couldn't create folder: %s in target server.", sourceFolderName));
}
updatedFoldersCopiedCount(1);
incrementFoldersCopiedCount();
} else {
updatedFoldersSkippedCount(1);
incrementFoldersSkippedCount();
}
//Folder recursion. Get all children
if ((folder.getType() & Folder.HOLDS_FOLDERS) == Folder.HOLDS_FOLDERS) {
Expand All @@ -121,9 +118,6 @@ private void copySourceFolder(Folder folder) throws MessagingException {
/**
* Once the folder structure has been created it copies messages recursively from the root
* folder.
*
* @param sourceFolder
* @throws MessagingException
*/
private void copySourceMessages(IMAPFolder sourceFolder) throws MessagingException {
if (sourceFolder != null) {
Expand Down Expand Up @@ -170,12 +164,12 @@ public final boolean hasCopyException() {
}
}

private void updatedFoldersCopiedCount(int delta) {
foldersCopiedCount.getAndAdd(delta);
private void incrementFoldersCopiedCount() {
foldersCopiedCount.getAndAdd(1);
}

private void updatedFoldersSkippedCount(int delta) {
foldersSkippedCount.getAndAdd(delta);
private void incrementFoldersSkippedCount() {
foldersSkippedCount.getAndAdd(1);
}

protected final void updatedMessagesCopiedCount(long delta) {
Expand Down
13 changes: 6 additions & 7 deletions src/main/java/com/marcnuri/mnimapsync/store/StoreDeleter.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@

import com.marcnuri.mnimapsync.MNIMAPSync;
import com.marcnuri.mnimapsync.index.Index;
import com.sun.mail.imap.IMAPFolder;
import com.sun.mail.imap.IMAPStore;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
Expand Down Expand Up @@ -65,15 +64,15 @@ public final void delete() throws InterruptedException {
//Delete Folder Structure
deleteTargetFolder(targetStore.getDefaultFolder());
//Copy messages
deleteTargetMessages((IMAPFolder) targetStore.getDefaultFolder());
deleteTargetMessages(targetStore.getDefaultFolder());
} catch (MessagingException ex) {
Logger.getLogger(StoreDeleter.class.getName()).log(Level.SEVERE, null, ex);
}
service.shutdown();
service.awaitTermination(1, TimeUnit.DAYS);
}

private void deleteTargetMessages(IMAPFolder targetFolder) throws MessagingException {
private void deleteTargetMessages(Folder targetFolder) throws MessagingException {
if (targetFolder != null) {
final String targetFolderName = targetFolder.getFullName();
final String sourceFolderName = targetToSourceFolderName(targetFolderName, sourceIndex, targetIndex);
Expand All @@ -98,7 +97,7 @@ private void deleteTargetMessages(IMAPFolder targetFolder) throws MessagingExcep
//Folder recursion. Get all children
if ((targetFolder.getType() & Folder.HOLDS_FOLDERS) == Folder.HOLDS_FOLDERS) {
for (Folder child : targetFolder.list()) {
deleteTargetMessages((IMAPFolder) child);
deleteTargetMessages(child);
}
}
}
Expand All @@ -111,7 +110,7 @@ private void deleteTargetFolder(Folder folder) throws MessagingException {
if (!sourceIndex.containsFolder(sourceFolderName)) {
//Delete recursively
targetStore.getFolder(targetFolderName).delete(true);
updatedFoldersDeletedCount(1);
incrementFoldersDeletedCount();
}
//Folder recursion. Get all children
if ((folder.getType() & Folder.HOLDS_FOLDERS) == Folder.HOLDS_FOLDERS) {
Expand All @@ -121,8 +120,8 @@ private void deleteTargetFolder(Folder folder) throws MessagingException {
}
}

private void updatedFoldersDeletedCount(int delta) {
foldersDeletedCount.getAndAdd(delta);
private void incrementFoldersDeletedCount() {
foldersDeletedCount.getAndAdd(1);
}

protected final void updatedMessagesDeletedCount(long delta) {
Expand Down

0 comments on commit 0e4660e

Please sign in to comment.