class ErrorResolver: "Resolves errors to error configs" def __init__(self, data=None): #list of keys is maintained in order to ensure the #predictable iteration order self.configsMap = LinkedHashMap() if data: self.configsMap.putAll(data) self.initDefaultConfigs() def addConfig(self, pattern, config): self.configsMap.put(pattern, config) def hasConfig(self, msg): iterator = self.configsMap.keySet().iterator() while iterator.hasNext(): pattern = iterator.next() if re.search(pattern, msg, re.I | re.M): return 1 def getConfig(self, msg): iterator = self.configsMap.keySet().iterator() while iterator.hasNext(): pattern = iterator.next() if re.search(pattern, msg, re.I | re.M): return self.configsMap.get(pattern) def getDefaultConfig(self): return self.defaultConfig def copy(self): return ErrorResolver(self.configsMap) def __len__(self): return self.configsMap.size() def __getitem__(self, key): return self.configsMap.get(key) def __setitem__(self, key, item): self.addConfig(key, item) def keys(self): return self.configsMap.keySet() def initDefaultConfigs(self): self.defaultConfigWithDetails = ErrorMessageConfig( ERROR_GENERIC_WITH_DETAILS, errorcodes.INTERNAL_ERROR_WITH_PROTOCOL_DETAILS) self.defaultConfig = ErrorMessageConfig(ERROR_CONNECTION_FAILED, errorcodes.CONNECTION_FAILED) self.defaultConfigNoProtocol = ErrorMessageConfig( ERROR_CONNECTION_FAILED_NO_PROTOCOL, errorcodes.CONNECTION_FAILED_NO_PROTOCOL) self.defaultConfigNoProtocolWithDetails = ErrorMessageConfig( ERROR_CONNECTION_FAILED_NO_PROTOCOL_WITH_DETAILS, errorcodes.CONNECTION_FAILED_NO_PROTOCOL_WITH_DETAILS)
if lastVertex != vertices.get(2*b): # New polyline polyline = ArrayList() listOfPolylines.add(polyline) polyline.add(vertices.get(2*b)) lastVertex = vertices.get(2*b+1) polyline.add(lastVertex) print "Group "+str(bId)+" contains "+str(listOfPolylines.size())+" polylines and "+str(listBeamId.size()+1)+" vertices" mapGroupToListOfPolylines.put(bId, listOfPolylines) for bId in bgroupMap.keySet(): listBeamId = bgroupMap.get(bId) listOfPolylines = mapGroupToListOfPolylines.get(bId) nrPoly = listOfPolylines.size() for numPoly in xrange(nrPoly): polyline = listOfPolylines.get(numPoly) listM = ArrayList() for v in polyline: listM.add(EuclidianMetric3D(size)) #for v in polyline: # print v print "Remesh polyline "+str(numPoly+1)+"/"+str(nrPoly)+" of group "+str(bId)+"/"+str(bgroupMap.size())+" "+str(polyline.size())+" vertices" result = RemeshPolyline(mesh, polyline, listM).compute() for i in xrange(result.size() - 1): mesh.addBeam(result.get(i), result.get(i+1), bId) print " New polyline: "+str(result.size())+" vertices" #for v in result: # print v MeshWriter.writeObject3D(mesh, outDir, "")