Mercurial > jhg
comparison src/org/tmatesoft/hg/internal/FNCacheFile.java @ 667:fba85bc1dfb8
Refactoring: move all encoding/decoding operations into single place, EncodingHelper
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 11 Jul 2013 17:54:08 +0200 |
parents | ae2d439fbed3 |
children |
comparison
equal
deleted
inserted
replaced
666:27a3ddedd6cc | 667:fba85bc1dfb8 |
---|---|
22 import java.io.FileOutputStream; | 22 import java.io.FileOutputStream; |
23 import java.io.IOException; | 23 import java.io.IOException; |
24 import java.nio.ByteBuffer; | 24 import java.nio.ByteBuffer; |
25 import java.nio.CharBuffer; | 25 import java.nio.CharBuffer; |
26 import java.nio.channels.FileChannel; | 26 import java.nio.channels.FileChannel; |
27 import java.nio.charset.Charset; | |
28 import java.util.ArrayList; | 27 import java.util.ArrayList; |
29 import java.util.List; | 28 import java.util.List; |
30 | 29 |
31 import org.tmatesoft.hg.core.HgIOException; | 30 import org.tmatesoft.hg.core.HgIOException; |
32 import org.tmatesoft.hg.util.Path; | 31 import org.tmatesoft.hg.util.Path; |
81 if (addedDotI.isEmpty() && addedDotD.isEmpty()) { | 80 if (addedDotI.isEmpty() && addedDotD.isEmpty()) { |
82 return; | 81 return; |
83 } | 82 } |
84 File f = repo.getRepositoryFile(FNCache); | 83 File f = repo.getRepositoryFile(FNCache); |
85 f.getParentFile().mkdirs(); | 84 f.getParentFile().mkdirs(); |
86 final Charset filenameEncoding = repo.getFilenameEncoding(); | 85 final EncodingHelper fnEncoder = repo.buildFileNameEncodingHelper(); |
87 ArrayList<CharBuffer> added = new ArrayList<CharBuffer>(); | 86 ArrayList<CharBuffer> added = new ArrayList<CharBuffer>(); |
88 for (Path p : addedDotI) { | 87 for (Path p : addedDotI) { |
89 added.add(CharBuffer.wrap(pathHelper.rewrite(p))); | 88 added.add(CharBuffer.wrap(pathHelper.rewrite(p))); |
90 } | 89 } |
91 for (Path p : addedDotD) { | 90 for (Path p : addedDotD) { |
103 try { | 102 try { |
104 fos = new FileOutputStream(f, true); | 103 fos = new FileOutputStream(f, true); |
105 FileChannel fncacheFile = fos.getChannel(); | 104 FileChannel fncacheFile = fos.getChannel(); |
106 ByteBuffer lf = ByteBuffer.wrap(new byte[] { 0x0A }); | 105 ByteBuffer lf = ByteBuffer.wrap(new byte[] { 0x0A }); |
107 for (CharBuffer b : added) { | 106 for (CharBuffer b : added) { |
108 fncacheFile.write(filenameEncoding.encode(b)); | 107 fncacheFile.write(fnEncoder.toFNCache(b)); |
109 fncacheFile.write(lf); | 108 fncacheFile.write(lf); |
110 lf.rewind(); | 109 lf.rewind(); |
111 } | 110 } |
112 fncacheFile.force(true); | 111 fncacheFile.force(true); |
113 tr.done(f); | 112 tr.done(f); |