#766 Resolves issue with playlist alias editor clone alias feature causing multiple copies of alias. Changed clone feature to only use a shallow copy (no ids or actions). Removed alias event framework from code since all change notifications can now be detected by the alias model's aliasList property. (#791)

Co-authored-by: Denny <denny@denny-desktop>
This commit is contained in:
Denny Sheirer
2020-05-04 10:20:49 +00:00
committed by GitHub
parent 08ea0e0f18
commit 5d580544e7
10 changed files with 248 additions and 442 deletions

View File

@@ -51,6 +51,9 @@ import io.github.dsheirer.alias.id.tone.TonesID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
public class AliasFactory
{
private static final Logger mLog = LoggerFactory.getLogger(AliasFactory.class);
@@ -180,32 +183,56 @@ public class AliasFactory
return null;
}
public static Alias copyOf(Alias original)
public static Alias shallowCopyOf(Alias original)
{
Alias copy = new Alias(original.getName());
copy.setAliasListName(original.getAliasListName());
copy.setGroup(original.getGroup());
copy.setColor(original.getColor());
copy.setIconName(original.getIconName());
return copy;
}
public static List<AliasID> copyAliasIDs(Alias original)
{
List<AliasID> aliasIDS = new ArrayList<>();
for(AliasID id : original.getAliasIdentifiers())
{
AliasID copyID = copyOf(id);
if(copyID != null)
{
copy.addAliasID(copyID);
}
aliasIDS.add(copyOf(id));
}
for(AliasAction action : original.getAliasActions())
{
AliasAction copyAction = copyOf(action);
return aliasIDS;
}
if(copyAction != null)
{
copy.addAliasAction(copyAction);
}
public static List<AliasAction> copyAliasActions(Alias original)
{
List<AliasAction> actions = new ArrayList<>();
for(AliasAction aliasAction: original.getAliasActions())
{
actions.add(copyOf(aliasAction));
}
return actions;
}
public static Alias copyOf(Alias original)
{
Alias copy = shallowCopyOf(original);
List<AliasID> aliasIDS = copyAliasIDs(original);
for(AliasID aliasID: aliasIDS)
{
copy.addAliasID(aliasID);
}
List<AliasAction> actions = copyAliasActions(original);
for(AliasAction action: actions)
{
copy.addAliasAction(action);
}
return copy;