Mercury-IM/data/src/main/java/org/mercury_im/messenger/data/mapping/IkeyRecordMapping.java

58 lines
2.1 KiB
Java

package org.mercury_im.messenger.data.mapping;
import org.jivesoftware.smackx.ikey.record.IkeyRecord;
import org.jivesoftware.smackx.ikey.record.IkeySubordinateRecord;
import org.jivesoftware.smackx.ikey.record.OxSubordinateRecord;
import org.mercury_im.messenger.data.model.IkeyRecordModel;
import org.mercury_im.messenger.data.model.IkeySubordinateModel;
import org.pgpainless.key.OpenPgpV4Fingerprint;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import lombok.NonNull;
public class IkeyRecordMapping extends AbstractMapping<IkeyRecord, IkeyRecordModel> {
@Override
protected IkeyRecord newEntity(@NonNull IkeyRecordModel model) {
List<IkeySubordinateRecord> subordinateRecords = mapToSubordinateRecords(model.getSubordinates());
return new IkeyRecord(UUID.randomUUID(), model.getJid(), model.getTimestamp(), model.getSuperordinate(), subordinateRecords);
}
private List<IkeySubordinateRecord> mapToSubordinateRecords(List<IkeySubordinateModel> subordinates) {
List<IkeySubordinateRecord> records = new ArrayList<>();
for (IkeySubordinateModel m : subordinates) {
if (m.getType().equals("urn:xmpp:openpgp:0")) {
OxSubordinateRecord r = new OxSubordinateRecord();
r.setOxFingerprint(new OpenPgpV4Fingerprint(m.getFpr()));
r.setUri(m.getUri());
records.add(r);
}
}
return records;
}
@Override
protected IkeyRecordModel newModel(@NonNull IkeyRecord entity) {
IkeyRecordModel model = new IkeyRecordModel();
model.setJid(entity.getJid());
model.setTimestamp(entity.getTimestamp());
model.setSuperordinate(entity.getSuperordinate());
model.setFingerprint(new OpenPgpV4Fingerprint(entity.getSuperordinate()));
return model;
}
@Override
protected IkeyRecordModel mapToModel(@NonNull IkeyRecord entity, @NonNull IkeyRecordModel model) {
return null;
}
@Override
protected IkeyRecord mapToEntity(@NonNull IkeyRecordModel model, @NonNull IkeyRecord entity) {
return null;
}
}