int bytesToCopy = len < remainInSegment ? len : remainInSegment;
byte[] segmentData = getSegmentData(fileSegment, segmentPosition + bytesToCopy);
System.arraycopy(b, offset, segmentData, segmentPosition, bytesToCopy);
fileSegmentDAO.updateData(fileSegment, segmentData);
offset += bytesToCopy;
len -= bytesToCopy;
segmentPosition += bytesToCopy;
}