T
From what you see.for (Map.Entry<String, DbList> entry: images.entrySet()) {
for (Object newImage: entry.getValue()) {
if (!getURL((DataObject) newImage).equals("")) {
// Вначале проверяем URL, а потом, при необходимости, создаем Map
Map<String, Object> parameters = mappingpParameters((DataObject) newImage);
Map<String, String> attributes = mappingAttributes((DataObject) newImage, importPars);
DataObject data = findDataById(attributes.get(ID), importPars);
File image = createImage(importPars, attributes, data);
// Почему так, смотри ниже
if (useImgImport && isDocumentHasChanges(image, data, parameters)) {
try {
DbList forUpdate = docsForUpdate(image, newImage, attributes, parameters, importPars, data, useImgImport);
update(forUpdate, importPars.getCollectionName(), data);
} catch (Exception e) {
logger.error("Current image has not saved", e);
}
}
}
}
}
Or if you break the condition. (useImgImport && isDocumentHasChanges(image, data, parameters)) It'll be better.if (useImgImport) { // useImgImport нигде не модифицируется и ее можно проверить только раз
for (Map.Entry<String, DbList> entry: images.entrySet()) {
for (Object newImage: entry.getValue()) {
if (!getURL((DataObject) newImage).equals("")) {
// Вначале проверяем URL, а потом, при необходимости, создаем Map
Map<String, Object> parameters = mappingpParameters((DataObject) newImage);
Map<String, String> attributes = mappingAttributes((DataObject) newImage, importPars);
DataObject data = findDataById(attributes.get(ID), importPars);
File image = createImage(importPars, attributes, data);
if (isDocumentHasChanges(image, data, parameters)) {
try {
DbList forUpdate = docsForUpdate(image, newImage, attributes, parameters, importPars, data, useImgImport);
update(forUpdate, importPars.getCollectionName(), data);
} catch (Exception e) {
logger.error("Current image has not saved", e);
}
}
}
}
}
}
Explanation on the body (try-catch is to be displayed).if (!useImgImport || isDocumentHasChanges(image, data, parameters)) {
// (1)
DbList forUpdate = docsForUpdate(image, newImage, attributes, parameters, importPars, data, useImgImport); // (2)
if (useImgImport) {
// (3)
update(forUpdate, importPars.getCollectionName(), data);
}
}
♪ (1) We'll get in if useImgImport = false or were amended♪ (2) variable useImgImport No change♪ (3) We'll get in if useImgImport = trueIf you combine the conditions (1) and (3)♪ update() to be implemented(!useImgImport || isDocumentHasChanges) && useImgImport
or in brackets(!useImgImport && useImgImport) || (isDocumentHasChanges && useImgImport)
(!useImgImport && useImgImport) Always. false and the general expression not affected. Only condition left (isDocumentHasChanges && useImgImport)